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 回答