java - 无限循环...?

标签 java for-loop

我构建了这个程序来从文件中读取用户名。它检查用户输入的用户名是否在配置文件中。现在,如果它不在文件中,它会询问您是否要创建一个新用户?我想做的是对用户的一些输入验证 - 这意味着,我希望他能够仅用 Y 表示是,N 表示否来回答,并且只进行 5 次尝试。

我的问题是我的“labeled for”循环中有些东西无法正常工作。它假设只询问用户他的用户名 5 次,但它会一直询问,就像一个无限循环。另外,我希望它只在我找不到用户的个人资料时才向用户写入一次,因此我将其放在 for 循环之外,但它会在每次迭代中显示。

如有任何帮助,我们将不胜感激。

else {
    System.out.println("Sorry couldn't find your user profile " + userName + ".");
    // If profile wasn't found, ask to create a new one.
    search:
    for(int i=0; i<5; i++) {    
        System.out.println("Would you like to create a new user profile now? (Enter Y for yes), (Enter N for no and exit).");
        try{
            BufferedReader answer = new BufferedReader(new InputStreamReader(System.in));
            String addNewUser = answer.readLine();
            // If user pressed Y than write the new user name to myFile.txt
            if (addNewUser.toLowerCase().startsWith("y")) {
                if(addNewUser.length() == 1){
                    System.out.println("Please enter a new user name:");
                    BufferedReader readNewUser = new BufferedReader(new InputStreamReader(System.in));
                    String newUserName = readNewUser.readLine();
                    PrintWriter write = new PrintWriter("d:\\profile.txt");
                    write.print(newUserName);
                    write.close();
                    break search;
                } else {
                    System.out.println("You've mistyped, please enter only one char:"); 
                    break;
                }
            } else {
                System.out.println("You've mistyped, the answer can only be Y or N. Try again:");   
            }

最佳答案

我认为您误解了 break 的作用。 Break 将退出循环并继续执行您的代码。中断到标签允许您跳出特定循环,但是您只有 1 个循环,因此该代码是多余的。
您要查找的命令是继续,它将跳到循环的下一次迭代。

我建议阅读这篇文章 Oracle article关于中断和继续。

关于java - 无限循环...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874604/

相关文章:

java - 从 Map<String, Map<String, Object>> 获取不正确的值

for-loop - F# 查询表达式 : cannot use "for"!

xml - XQuery:如何使用内部 for 循环的结果来对外部 for 循环的结果进行排序?

python - double for,python 中的一些错误

c++ - 需要帮助将 .txt 字符分配到二维数组中。 C++

java - 确保流的工作线程完成后的内存一致性

java - 如何通过java代码登录我的账户

java - 在 AsyncTask 中通过 URL 从服务器获取 XML 并将响应返回给 UI

java - 如何从项目列表中检索选定的项目?

r - 多个 R 函数上带有 if 条件的 For 循环