在Java中第一次跳过控制台?

时间:2016-04-29 01:22:20

标签: java console skip

以下是我在Java中遇到问题的一段代码;它似乎为另一个问题交换了一个问题。由于空白错误,我在检索用户输入时遇到问题;我通过添加“nextLine”而不是“next”来修复它。

但是现在,它不是让用户有机会回答第一个问题,而是跳过控制台框,只是输出“错误”,然后再回答问题二,现在用户的第一个控制台框出现了。 / p>

我仔细检查:使用“next”,第一个问题的控制台显示,但是使用“nextLine”,它会跳过该控制台框(不会让用户有机会输入任何内容),吐出“错误的“,然后转到问题二,用户可以在哪里输入内容。

为什么要这样做?

IF "%1"=="yourPassword" goto :proceed

3 个答案:

答案 0 :(得分:0)

读取代码有点乏味,使用{}代码块格式化程序,因此更容易阅读。

尝试使用trim()函数删除输入前后的空格。

这可能是因为你已经在循环中初始化了你的响应字符串,尝试将其移出并查看它的作用。希望这会有所帮助。

答案 1 :(得分:0)

String response = console.nextLine();
    response = response.trim(); //remove spaces
    if(response.equalsIgnoreCase(rules[i].trim())){
        System.out.println("CORRECT");
    }else{
        System.out.println("WRONG\nThe correct wording is: "+rules[i]);
    }

有一些需要解决的问题。你正在替换空白。并在你的if循环中你再次删除空格。并使用trim()函数删除whitespaces.check与此示例

答案 2 :(得分:0)

对于他可能关心的人,我在别处做了一些搜索,几个小时后,我遇到了solved it;

基本上,我所做的就是:

if(nwb.equalsIgnoreCase("numbers")){
                    System.out.println("You must type in the rules verbatim (word for word, including puncutation), as shown on the Student Hand-Out. Capitalization does not matter.");
                    int count = 1;
                    for(int i = 0; i<=(rules.length-1); i++){
                        System.out.print("Rule #"+count);                            
                        String derpTest = console.nextLine();
                        String response = console.nextLine().replaceAll(" ","");
                        if(response.equalsIgnoreCase(rules[i].replaceAll(" ",""))){
                            System.out.println("CORRECT");
                        }else{
                            System.out.println("WRONG\nThe correct wording is: "+rules[i]);
                        }
                        count++;
                    }
}

String derpTest用完了,据我所知,所有这一切都进行到String响应。我没有模糊的想法为什么这样做;我不太明白这个链接在说什么,所以,如果有人要解释它,那就太棒了。感谢所有试图解决这个问题的人,这很奇怪。