以下是我在Java中遇到问题的一段代码;它似乎为另一个问题交换了一个问题。由于空白错误,我在检索用户输入时遇到问题;我通过添加“nextLine”而不是“next”来修复它。
但是现在,它不是让用户有机会回答第一个问题,而是跳过控制台框,只是输出“错误”,然后再回答问题二,现在用户的第一个控制台框出现了。 / p>
我仔细检查:使用“next”,第一个问题的控制台显示,但是使用“nextLine”,它会跳过该控制台框(不会让用户有机会输入任何内容),吐出“错误的“,然后转到问题二,用户可以在哪里输入内容。
为什么要这样做?
IF "%1"=="yourPassword" goto :proceed
答案 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响应。我没有模糊的想法为什么这样做;我不太明白这个链接在说什么,所以,如果有人要解释它,那就太棒了。感谢所有试图解决这个问题的人,这很奇怪。