1

我正在尝试做一个 while 循环,如果密码正确,则打印欢迎语句,如果您错了,则拒绝您。当你错了,我希望它重新提出问题。不幸的是,当密码错误时,它只会发送垃圾邮件并且不会重新循环。谢谢!

import java.util.Scanner;

public class Review {
    public static void main(String[] args) {

        Scanner userInput = new Scanner(System. in );
        System.out.println("Enter user password");
        String userGuess = userInput.nextLine();
        int x = 10;

        while (x == 10) {

            if (userGuess.equals("test")) {
                System.out.println("Welcome");
                return;
            } else if (!userGuess.equals("test")) {
                System.out.println("Wrong, try again");
                break;
            }
        }
    }
}
4

3 回答 3

1

我认为您正在尝试创建一个解决方案,该解决方案检查 10 次密码然后退出。如果是这样,我会推荐 McGee 的前进方式。

否则,您的代码的问题是由于在控制流中遇到“返回”或“中断”,循环将在第一次迭代后永远不会继续。

即使这是固定的(可能是通过删除其中任何一个);程序将进入无限循环;因为while循环将有一个真实的情况(x == 10)。

请告诉我们,目标是什么;我们可以为您提供更多帮助。

于 2013-09-04T21:13:55.657 回答
0

尝试这个:

import java.util.Scanner;

public class Review {
    public static void main (String[]args) {

        Scanner userInput = new Scanner(System.in);

        while (true) {

            System.out.println("Enter user password");
            String userGuess = userInput.nextLine();

            if (userGuess.equals("test")) {
                System.out.println("Welcome");
                return;
            }

            else{
                System.out.println("Wrong, try again");
            }

        }
    }
}

我使用了 while(true) 而不是你做的 x=10 事情。我将要求输入密码的部分移到了 while 循环内。您也可以将 userInput 声明移动到循环内部,如果您使用它的唯一时间是您要求输入密码。

于 2013-09-04T21:12:26.600 回答
0

您需要在循环内进行猜测。代码越少越好:

Scanner userInput = new Scanner(System.in);
System.out.println("Enter user password");
for (int n = 0; n < 10; n++) {
    if (userInput.nextLine().equals("test")) {
        System.out.println("Welcome");
        return;
    }
    System.out.println("Wrong, try again");
}

通常,当您消除不必要的代码时,清晰度会提高。这是这样一种情况。

于 2013-09-04T21:30:17.753 回答