繁体   English   中英

无限循环...?

[英]infinite for loop…?

我已经建立了这个程序来从文件中读取用户名。 它检查以查看用户输入的用户名是否在配置文件中。 现在,如果它不在文件中,它将询问您是否要创建一个新用户? 我想做的是从用户那里进行一些输入验证-意思是,我希望他只能回答5(是),是(是),否(是)。

我的问题是我的“标记为”循环中某些内容无法正常工作。 假设只询问用户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将退出循环并继续执行您的代码。 断开标签可以使您跳出特定的循环,但是只有一个循环,因此代码只是多余的。
您要查找的命令是continue ,它将跳至循环的下一个迭代。

我建议阅读这篇有关中断和继续的Oracle文章

第一:必须更换第二breakcontinue
第二:纠正方法的结尾。 您必须检查用户是否插入了“ n”:

if (addNewUser.toLowerCase().startsWith("n")) {
   // do something...
}else {
   System.out.println("You've mistyped, the answer can only be Y or N. Try again:");   
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM