2

これは私がこれまでに持っているものです:

int question = sc.nextInt(); 

while (question!=1){

    System.out.println("Enter The Correct Number ! ");

    int question = sc.nextInt(); // This is wrong.I mean when user enters wrong number the program should ask user one more time again and again until user enters correct number.
    // Its error is : duplicate local variable

}
4

4 に答える 4

2

私の理解では、あなたの要件は、正しい番号と一致するまでユーザーに何度もプロンプトを表示することです。この場合、次のようになります。ユーザーが。を入力する限り、ループが繰り返されます1

Scanner sc = new Scanner(System.in);        
System.out.println("Enter The Correct Number!");
int question = sc.nextInt(); 

while (question != 1) {
    System.out.println("please try again!");
    question = sc.nextInt(); 
}
System.out.println("Success");
于 2012-11-08T08:22:16.237 に答える
2

ループ内で変数を再宣言しようとしています。既存の変数に別の値を与えるだけです。

while (question != 1) {
    System.out.println("Enter The Correct Number ! ");
    question = sc.nextInt();
}

これは宣言ではなく単なる代入です。

于 2012-11-08T08:11:46.513 に答える
2

ループの外側で int question を宣言してから、ループの内側で再度宣言しています。

ループ内の int 宣言を削除します。

Java では、変数のスコープは、変数が宣言されている句に依存します。変数を try または while または他の多くの句の内側で宣言すると、その変数はその句に対してローカルになります。

于 2012-11-08T08:11:57.483 に答える
1

question変数を再宣言する代わりに再利用します。

int question = sc.nextInt(); 
while (question != 1) {
    System.out.println("Enter The Correct Number ! ");
    question = sc.nextInt(); // ask again
}
于 2012-11-08T08:11:46.917 に答える