2016-09-25 5 views
-5

私のコードは次のとおりです。私の配列は最後に入力した番号のみを保存していますか?

int total = 10; 
int[] myArray = new int [total]; 

System.out.println("Enter numbers. To stop, enter 0.") 

int numbers = input.nextInt(); 

while (numbers != 0) { 
    for (int i = 0; i < total; i ++) 
      myArray[i] = numbers; 

    numbers = input.nextInt(); 
} 

for (int i = 0; i < myArray.length; i++) 
    System.out.print(myArray[i] + ", ") //This line only prints the last number I enter 10 times. 

私は入力された番号の配列全体を印刷できるようにしたいです。たとえば:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0

しかし、私が得る結果は次のとおりです:

私が入る10, 10, 10, 10, 10, 10, 10, 10, 10, 10

EDIT:私の質問が重複してマークされている理由を私は得ることはありませんか?私はこのサイトのいたるところで似たような質問をしてみましたが、見つけていないので、私は尋ねました。これはこのサイトの目的ではありませんか?

EDIT 2:Fine。私はそれがどのようなものかを見る。私は他の役に立つサイトに私の質問をします。あなたの "サービス"スタック交換をありがとう。

+0

あなたのforループはどう思いますか? –

+0

あなたのコードから、私が理解しているように、ユーザが '0'を入力するまで、またはあなたの配列がいっぱいになるまで、おそらく入力を取ろうとしていますか?私は正しい? –

+0

+ Muhammadはい。それが私の努力です。 – 5120bee

答えて

1

forループは、毎回配列内のすべての項目をリセットしています。私はあなたがそれをすることを意図しているのか疑問に思います。

+0

私は参照してください。しかし、whileループで入力行を取り除くと、ユーザが '0'を入力したときにどのようにループを止めることができますか? – 5120bee

+0

numbers!= 0 whileループでは正しいですが、whileループ内のforループを削除して、ユーザーがすべての配列をすでに満たしているかどうかを確認する別の条件を追加するだけです。 while(numbers!= 0 || counter <合計) 次に入力を配列に割り当ててカウンタを更新する必要があります –

0

あなたはこれを行うことができます。

  1. iwhileループを宣言し0でそれを初期化します。
  2. whileループの状態をnumbers != 0 && i < totalに変更します。
  3. whileループ内のforループを削除します。
  4. 代わりに、forループを置き換えるには、myArray[i] = numbers;i++;と入力してください。

    int numbers = input.nextInt(); 
    int i = 0; 
    while (numbers != 0 && i < total) { 
        myArray[i] = numbers; 
        i++; 
        numbers = input.nextInt(); 
    } 
    

    Hereのあなたのコードの作業罰金:

は、ここでは、コードです。

関連する問題