0

ここにこのコードがあります:

Scanner input = new Scanner(System.in);
int array[] = new int[10];

System.out.println("Enter the numbers now.");

for (int i = 0 ; i < array.length; i++ ) {        
    if (input.nextInt() == 999){        
        break;
    } else {
        array[i] = input.nextInt();
    }
}

ユーザーが配列内に 999 を入力した場合、ループから抜け出したいのですが、これまでのところうまくいきません。break または return false を使用してみましたが、何も機能しません。誰にも解決策がありますか?どうもありがとう!

4

4 に答える 4

5

あなたは2回使用しています.それはとinput.nextInt();のコンソールから読んでいます.ifelse

 for (int i = 0 ; i < array.length; i++ ) {
      int enteredNumber = input.nextInt();
      if (enteredNumber == 999){
          break;
      } else {
         array[i] = enteredNumber ;
      }
 }
于 2013-08-30T04:52:43.877 に答える
4

ループ内で2回読んでいます。したがって、if条件が偽の場合 (ユーザーが を入力しない場合999)、elseユーザーからの新しい入力を読み取るブロックに入ります999

ループを次のように変更します。

for (int i = 0 ; i < array.length; i++ ) {
    int read = input.nextInt();
    if (read == 999) {
        break;
    }
    array[i] = read;
}

それとは別に、ユーザーが実際に整数を渡さない場合も考慮する必要があります。その場合、コードは失敗します。Scanner#hasNextInt()そのためにメソッドを使用できます。

for (int i = 0 ; i < array.length; i++ ) {
    while (!input.hasNextInt()) {
        System.out.println("You must pass an integer");
        input.next();  // Advance the scanner past the current line.
    }
    int read = input.nextInt();
    if (read == 999) {
        break;
    }
    array[i] = read;
}

もちろん、ユーザーが整数以外の値を入力し続けると、そのループが永久に実行される可能性があります。これを克服するために、ユーザーに最大試行回数を与えることができます。それはあなたに任せます。(ヒント: 0 から最大までのカウンターが必要です。ループの反復ごとにリセットしてください)。

于 2013-08-30T04:53:54.873 に答える
3

現在の方法は、各反復内でnextInt() 複数回呼び出すことです。

つまり、データが失われます。最初に 7 を入力したとしましょう。これはifステートメントで "not 999" として取り上げられているため、ユーザーにさらに別のelse番号を求める句に移動します(7 を失ってしまいました)。

さらに、 への最初の呼び出しを実行するときに 999 を入力した場合にのみ、そのループから抜け出しますnextInt()。2 番目の呼び出しを実行しているときに 999 を入力すると、それが保存されて処理が続行されます。

代わりにこれを試してください:

for (int i = 0 ; i < array.length; i++ ) {
    int next = input.nextInt();
    if (next == 999)
        break;
    array[i] = next;
}
于 2013-08-30T04:53:08.213 に答える
1

forループでこれを試してください。

for (int i = 0 ; i < array.length; i++ ) {

int number = input.nextInt();

   if (number == 999){
        break;
    }
   System.out.println("aghsdgha" + number);

}

これは、入力番号をチェックするためのより簡単でクリーンな方法です。

于 2013-08-30T05:03:52.500 に答える