在Java中第一次跳过控制台?
下面是我在Java中遇到问题的一段代码;它似乎把一个问题换成了另一个问题。由于空格错误,我在检索用户输入时遇到了问题;我通过添加“nextLine”而不仅仅是“next”来解决这个问题 但是现在,它没有给用户一个回答第一个问题的机会,而是跳过控制台框并简单地输出“错误”,然后继续第二个问题,此时用户的第一个控制台框出现了 我仔细检查了一下:使用“下一步”,第一个问题的控制台出现了,但使用“nextLine”,它跳过了控制台框(用户没有机会键入任何内容),吐出“错误”,然后转到第二个问题,用户最终可以键入内容 为什么要这样做在Java中第一次跳过控制台?,java,console,skip,Java,Console,Skip,下面是我在Java中遇到问题的一段代码;它似乎把一个问题换成了另一个问题。由于空格错误,我在检索用户输入时遇到了问题;我通过添加“nextLine”而不仅仅是“next”来解决这个问题 但是现在,它没有给用户一个回答第一个问题的机会,而是跳过控制台框并简单地输出“错误”,然后继续第二个问题,此时用户的第一个控制台框出现了 我仔细检查了一下:使用“下一步”,第一个问题的控制台出现了,但使用“nextLine”,它跳过了控制台框(用户没有机会键入任何内容),吐出“错误”,然后转到第二个问题,用户最终
if(nwb.equalsIgnoreCase("numbers")){
System.out.println("You must type in the rules verbatim "+
"(word for word, including punctuation), "+
"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 response = console.nextLine().replaceAll(" ","");
if(response.replaceAll(" ", "").equalsIgnoreCase(rules[i].replaceAll(" ", ""))){
System.out.println("CORRECT");
}else{
System.out.println("WRONG\nThe correct wording is: "+rules[i]);
}
count++;
}
}
if(nwb.equalsIgnoreCase(“数字”)){
System.out.println(“您必须逐字输入规则”+
(逐字逐句,包括标点符号)+
“如学生手上所示。”+
“资本化不重要。”);
整数计数=1;
对于(inti=0;i读取代码有点乏味,请使用{}代码块格式化程序,以便更易于阅读
尝试使用trim()
函数删除输入前后的空格
这可能是因为您已在循环中初始化了响应字符串,请尝试将其移出,然后看看效果如何。希望这会有所帮助。阅读代码有点繁琐,请使用{}代码块格式化程序,以便更容易阅读
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]);
}
尝试使用trim()
函数删除输入前后的空格
这可能是因为您已经在循环中初始化了响应字符串,请尝试将其移出,然后看看会发生什么。希望这会有所帮助
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()函数删除空白。请检查此示例
有几个问题需要解决。您正在替换空白。在if循环中,您正在再次删除空白。并使用trim()函数删除空白。请检查此示例,我在其他地方进行了一些搜索,几小时后,我发现了一些问题
基本上,我所做的是:
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++;
}
}
if(nwb.equalsIgnoreCase(“数字”)){
System.out.println(“你必须一字不差地输入规则(逐字逐句,包括puncutation),如学生手册所示。大写不重要。”);
整数计数=1;
对于(inti=0;i可能与之有关的人,我在别处搜索了一下,几个小时后,我发现了一件事
基本上,我所做的是:
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++;
}
}
if(nwb.equalsIgnoreCase(“数字”)){
System.out.println(“你必须一字不差地输入规则(逐字逐句,包括puncutation),如学生手册所示。大写不重要。”);
整数计数=1;
对于(int i=0;i高亮显示代码并按ctrl+k.Ah!就是这样做的。谢谢,对此很抱歉。rules是代码前面的字符串数组的名称。高亮显示代码并按ctrl+k.Ah!就是这样做的。谢谢,很抱歉。rules是代码前面的字符串数组的名称。这些建议更适合作为com注意,不是答案。我建议删除你的答案,因为你可能会被否决(虽然不是我)我在添加我的答案,我的错,我不小心提前提交了。空白是问题吗?错误只在我用“nextLine”替换“next”时出现。我不确定如何使用trim()(我对Java非常陌生),但我可以查找。@Ray25Lee不,但这将减少将来可能出现的其他问题。请尝试在循环之外声明您的输入和扫描仪。这些建议更适合作为注释,而不是答案。我建议删除您的答案,因为您可能会获得否决票(但不是我)我在添加我的答案,我的错,我不小心提前提交了它。空格是问题所在吗?只有当我将“next”替换为“nextLine”时才会出现错误。我不确定如何使用trim()(我对Java非常陌生),但我可以查找。@Ray25Lee没有,但这将减少将来可能出现的其他问题。请尝试在循环外声明输入和扫描仪。我原以为这里会重复使用空格编码,但问题不在于空格;我已经解决了。问题在于代码不允许用户回答之前的第一个问题接着是第二个问题。我把它修正到了你的例子中,它仍然在这样做。我想这里会有一些重复的空格编码,但问题不是空格;我已经修正了。问题是代码不允许用户在继续第二个问题之前回答第一个问题。我修正到了你的e例如,它仍然在这样做。更正;你需要把derpTest字符串放在循环的外面,或者当你转到问题2、3等时,它又变得奇怪了。把它放在循环之外,出于某种原因,一切都很好。仍然不明白,但是,呃。不管怎样。更正;你需要把derpTest字符串放在循环的外面e循环,或者当你转到问题2、3等时,它又变得奇怪了。把它放到循环之外,出于某种原因,一切都很好。仍然不明白,但是,呃,不管怎样。