2017-08-23 10 views
-1

私はこの質問をここで見ましたが、すべてのソリューションは "地図"と呼ばれるもので与えられました。本の学習(Javaプログラミングの第10版の紹介)。また、これは私の解決策であり、私は別のものを見上げるのではなく、自分自身でそれを行い、自分の欠陥を理解したいからです。私のコードで何が間違っているのかわかりません - 別個の番号

ユーザは10個の数字を入力し、プログラムは別個の番号を印刷します。 これは私のコードです:

int[] numbers = new int[10]; 
    int counter = 0; 
    for (int i = 0; i < 10; i++) { 
     int check = input.nextInt(); 
     if (!isContains(numbers, check)) ; 
     numbers[counter] = check; 
     counter++; 
    } 

    for (int i = 0; i < 10; i++) { 
     System.out.println(numbers[i]); 
    } 

} 

public static boolean isContains(int[] array, int key) { 

    for (int i = 0; i < array.length; i++) { 
     if (array[i] == key) 
      return true; 
    } 
    return false; 
    } 

} 

私のロジックはこれです: は番号が内側にすでにあるかどうかを確認するmethondをisContains-召喚、ユーザからの入力数を、10個の数字を通過し、空の配列を作成します配列でなければ、それを数値[counter]位置に代入します。

私はストレート2時間このEXCに取り組んできていると間違っているかを把握することはできません...私は は-while行わない形でこれを実行しようとした - 何の結果を...

私は与えられた解決策ではなく、私の論理に何が間違っているかを知りたい。 ありがとうございました! if (!isContains(numbers, check)) ;ラインで

答えて

1

;numbers配列に値が含まれ、その後、とにかく数を追加することで継続しない場合は、基本的にチェックしていることを意味文を終了します。何をする必要があることはif文の後{}内部の条件付きコードブロックを囲むことで、アレイに存在しない場合にのみ

if (!isContains(numbers, check)) { 
    numbers[counter] = check; 
    counter++; 
} 
1

に配列が含まれているかどうかを確認するあなたの「if」ブロックを、番号を追加し、あります値が間違っているようです。

if (!isContains(numbers, check)) ; 
    numbers[counter] = check; 
    counter++; 

は次のようになります。

if (!isContains(numbers, check)) { 
    numbers[counter] = check; 
    counter++; 
} 
関連する問題