2016-12-05 12 views
1

2つの配列の中で最大の要素を見つけようとするプログラムを作成しようとしています。配列に類似の要素が含まれている場合は、相互要素のうち最も高い要素が返されます。配列に類似の要素が含まれていない場合は、-1を返します。プログラムを90%完成させてください。私は最高の数字を返すことができました。私はreturn文を1つしか実行できないので、-1を返す方法を理解できません!どんな助け?2つの配列の中で最大の要素

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

編集のための@battyに感謝 –

+0

コードは機能しません。 array2の2番目の要素を1から8に変更して確認してください。これはあなたに何を改善するかのヒントを与えるでしょう。そして、技術的には、1つのメソッドで2つ以上のreturn文を使用することができます。 – Andrey

答えて

0

-1に初期化greatest、あなたがやっているようgreatestを返します。 ifの条件が満たされない場合(これは2つの同様の数字が存在しないことを意味します)、greatestは返される値-1を持ちます。二番目の配列チェックを通過しながら、マップ/表の配列から

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; 
} 
+1

これでも正しい答えが得られないことに注意してください。彼が使用している入力配列を処理するだけです。 – ajb

0

あなたが同様の要素を見つけるためにソートの両方と、ループを介して、これを使用することができmapがこの配列の要素を持っていて、それに応じて最大値を更新する場合上記のメソッドはこれを行い、相互要素がない場合は-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; 
} 

プットエレメント:

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; 


     } 
関連する問題