2017-03-20 1 views
-1

この割り当てに番号が繰り返されないのはなぜですか?以下のコードは、Javaコード入力

Scanner stdin = new Scanner(System.in); 
    int num = 1; 
    num = stdin.nextInt(); 
    do 
    { 
     if (num % 2 == 0) 
     { 
      System.out.print(num + " "); 
     } 

    }while(num > 0); 

ユーザーがこのプログラムに0よりも大きくても数を入力すると、スペースの後に再び番号を印刷することになって、それが勝っています't。私はこのコードを説明しているYouTubeのビデオを見て、彼らは私が同じコードをやっているが、何らかの理由で私のためにはうまくいかない。ここ

タスクである:

もあり、これらの値をプリントアウト、標準入力からの正の整数を読み取りループを書く、各スペースが続き、それが正でない整数を読み取る場合には終了します。必要な変数を宣言します。

標準入力に関連付けられているスキャナオブジェクトを参照する変数、STDINの可用性を想定します。

答えて

1

このようにする必要があります。

Scanner stdin = new Scanner(System.in); 
int num = 1; 
// uncomment if u not want to use default value 
// num = stdin.nextInt(); 
do 
{ 
    if (num % 2 == 0) 
    { 
     System.out.print(num + " "); 
    } 
    num = stdin.nextInt(); 
} 
while(num > 0); 
0

ループ内でnextIntコールを行います。一度読むだけではありません。

0

入力は1回です。やってみてください。

int num; 
do 
{ 
    num = stdin.nextInt(); 
    if (num % 2 == 0) 
    { 
     System.out.print(num + " "); 
    } 
}while(num>0); 

この方法では、あなたが入力にユーザーが

0

は、あなたが実際にあなたのループ内の値を読み取るために必要な正の数を入力するたびに取る、あなたはループ本体に読み込ま動くことができます。値が負ではないことをテストする必要もあります(私は仮定します)。同様に、

int num; 
do { 
    num = stdin.nextInt(); 
    if (num > 0 && num % 2 == 0) { 
     System.out.print(num + " "); 
    } 
} while (num > 0); 

しかし、あなたは(あまり明らかではあるが)より慣用方法でそれを書くことができます。 like

int num; 
while ((num = stdin.nextInt()) > 0) { 
    if (num % 2 == 0) { // <-- stop condition is checked before here. 
     System.out.print(num + " "); 
    } 
} 
関連する問題