2016-12-05 3 views
1

Ich versuche, ein Programm zu schreiben, das das größte Element in zwei Arrays findet. Wenn die Arrays ähnliche Elemente enthalten, wird das höchste der beiden Elemente zurückgegeben. Wenn die Arrays keine ähnlichen Elemente enthalten, wird -1 zurückgegeben. Ich habe das Programm zu 90 Prozent fertiggestellt. Es ist mir gelungen, die höchsten Zahlen zurückzugeben, ich kann einfach nicht herausfinden, wie man -1 zurückgibt, da wir nur eine Rückmeldung machen können! irgendeine Hilfe?Größtes Element in zwei Arrays

public class finalLargestInCommon 
    { 
     public static void main(String [] args) 
     { 
     //array declaration 
     int [] array1 = {3, 8, 5, 2, 7, 9}; 
     int [] array2 = {5, 1, 22, 7, 2, 15, 3}; 
     int [] array3 = {35, 12, 19, 35, 45}; 
     int [] array4 = {55, 99, 12}; 
     int [] array5 = {33, 11, 77, 44, 55}; 
     int [] array6 = {99, 88, 222, 66, 1000}; 

     System.out.println(LargestInCommon(array1, array2)); 
     System.out.println(LargestInCommon(array3, array4)); 
     System.out.println(LargestInCommon(array5, array6)); 



     } 

     public static int LargestInCommon (int [] a, int [] b) 
     { 
      //variable declaration 
      int i = 0; 
      int k = 0; 
      int greatest = 0; 
      int notPresent = -1; 

      for(i = 0; i < a.length; i++) 
      { 
      for(k = 0; k < b.length; k++) 
      { 
       if(a[i] == b[k]) 
       greatest = a[i]; 

      } 
      } 

      return(greatest); 


     } 


    } 
+0

danke @batty für die Bearbeitung –

+0

Der Code funktioniert nicht. Versuchen Sie, das zweite Element von Array2 von 1 auf 8 zu ändern und überprüfen Sie es. Dies gibt Ihnen einen Hinweis, was Sie verbessern können. Und technisch gesehen können Sie zwei oder mehr Return-Anweisungen in einer Methode haben. – Andrey

Antwort

0

initialisieren greatest auf -1 und das Rück greatest wie Sie tun. Wenn Ihre if Bedingung nicht getroffen wird (was bedeutet, dass zwei ähnliche Nummern nicht vorhanden sind) greatest wird Wert -1 haben, der zurückgegeben wird.

public static int LargestInCommon (int [] a, int [] b) 
     { 
      //variable declaration 
      int i = 0; 
      int k = 0; 
      int greatest = -1; 

      for(i = 0; i < a.length; i++) 
      { 
      for(k = 0; k < b.length; k++) 
      { 
       if(a[i] == b[k]) 
       greatest = a[i]; 

      } 
      } 

      return greatest; 


     } 
+1

Beachten Sie, dass dies immer noch nicht die richtige Antwort liefert. Es passiert zufällig, dass es an den Eingangsarrays arbeitet, die er benutzt. – ajb

0

Sie können diese verwenden, sortieren beide und dann die Schleife durch die ein ähnliches Element zu finden:

public static int maximumSimilar(int[] a, int[] b){ 
    Arrays.sort(a); 
    Arrays.sort(b); 
    for(int i = a.length-1; i>=0;i--){ 
     for(int j = b.length-1;j>=0;j--){ 
      if(b[j]==a[i]){ 
       return b[j]; 
      } 
     } 
    } 
    return -1; 
} 
0
private static int LargestInCommon(int[] a, int[] b) { 
    Map<Integer,Integer> map = new HashMap<>(); 
    for(int i=0;i<a.length;i++) { 
     map.put(a[i],0); 
    } 
    int greatest = -1; 
    if(map.containsKey(b[0])) greatest = b[0]; 
    for(int i=1;i<b.length;i++) { 
     if(map.containsKey(b[i])){ 
      if(greatest < b[i]) 
       greatest = b[i]; 
     } 
    } 
    return greatest; 
} 

Put Elemente aus einem Array in einer Karte/Tabelle, während das zweite Array-Check durchqueren Wenn die Karte Elemente aus diesem Array enthält, werden diese entsprechend aktualisiert. Die obige Methode tut dies und gibt -1 zurück, wenn keine gemeinsamen Elemente