2017-06-12 5 views
-1

3つのメソッドがあります。最初は作業の正当性を示し、配列内に10個の値を含みます。 2番目の方法は、最初のメソッドとは異なる5つの値を含む配列を作成することです。最終的な方法は、これらの両方を比較して、2つの間で一致する値を表示することです(一致する値は存在しないはずです)。私は2つの配列を比較し、trueまたはfalseのいずれかを表示し、これらのメソッドを使用することについて尋ねるいくつかの質問が既に不成功であることを発見しました。どんな助けでも大歓迎です。また、.lengthは配列が同じ長さである必要があることを理解していますが、同じ長さではなく比較するにはどうすればよいでしょうか?2つのメソッドの間で一致する値を表示する配列を取得できません

import java.util.stream.*; 
public class ArrayMethodDemo 
{ 
    public static void main(String[] args) 
    { 
     int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 
     int sum = 0; 
     System.out.println("Numbers in numerical order are:"); 
     for(int x = 0; x < numbers.length; ++x) 
      System.out.println(numbers[x]); 
     System.out.println("Numbers in reverse order are:"); 
     for(int x = numbers.length - 1; x >= 0; x--) 
      System.out.println(numbers[x]); 
     System.out.println("The sum of all numbers is:"); 
     int sumNumbers = IntStream.of(numbers).sum(); 
      System.out.println(sumNumbers); 
     System.out.println("All numbers less than 6 are:"); 
     for(int x = 0; x < numbers.length; ++x) 
     { 
      if(numbers[x] < 6) 
      { 
       System.out.println(numbers[x]); 
      } 
     } 
     System.out.println("All numbers higher than the average value 5.5 are:"); 
     for(int x = 0; x < numbers.length; x++) 
     { 
      sum = sum + numbers[x]; 
     } 
     double average = 1.0d * sum/numbers.length; 
     for(int x = 0; x < numbers.length; x++) 
     { 
      if(numbers[x] > average) 
      { 
       System.out.println(numbers[x]); 
      } 
     } 
     System.out.println("All numbers that are similar between both arrays are:"); 
     System.out.println(compareArrays()); 
    } 
    public static int[] newNumbers() 
    { 
     int[] newNumbers = {11, 12, 13, 14, 15}; 
     return newNumbers; 
    } 
    public static void compareArrays(int[] numbers, int[] newNumbers) 
    { 
     boolean b = true; 
     for(int x = 0; x < newNumbers.length; x++) 
     { 
      if(newNumbers[x] == numbers[x]) 
      { 
       b = true; 
      } 
      else 
      { 
       b = false; 
      } 
     } 
    } 
} 

答えて

-3

まず、printステートメント内でcompareArrays()メソッドを呼び出しても、メソッドはprintの値を返しません。

second:パラメーターが2つ指定されていてパラメータなしのため、calll compareArrays()メソッドを任意のパラメーターと比較していませんでした。比較する値が見つからないためです。

私はあなたのコードは次のようにあるべきだと思う:

System.out.println(compareArrays(numbers)); 

public static boolean compareArrays(int[] numbers) 
    { 
     boolean b = true; 
     int[] newNumbers = newNumbers(); 

     for(int x = 0; x < newNumbers.length; x++) 
     { 
      if(newNumbers[x] == numbers[x]) 
      { 
       b = true; 
      } 
      else 
      { 
       b = false; 
      } 
     } 

     return b; 
    } 
+0

働いたこと!今私の唯一の質問は、「偽」の代わりに「存在しない」と言うためにSystem.out.printlnへのフォローアップをどうすればよいのでしょうか? – Stich19

+0

代わりに(return b;)の代わりにif(!b){return "there are none"}と書くことができ、メソッドの戻り値の型を文字列に変更する –

+2

これは間違いが間違っています。戻り値は最後の比較の結果です。つまり、newNumbers [newNumbers.length - 1]が 'numbers [newNumbers.length - 1]'にマッチするかどうかです。考え方が配列を比較することである場合、このメソッドは不一致が見つかると直ちに 'false'を返すべきです。そうしないと誤検出が非常に多くなります。 –

関連する問題