Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中第一次跳过控制台?_Java_Console_Skip - Fatal编程技术网

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

在Java中第一次跳过控制台?,java,console,skip,Java,Console,Skip,下面是我在Java中遇到问题的一段代码;它似乎把一个问题换成了另一个问题。由于空格错误,我在检索用户输入时遇到了问题;我通过添加“nextLine”而不仅仅是“next”来解决这个问题 但是现在,它没有给用户一个回答第一个问题的机会,而是跳过控制台框并简单地输出“错误”,然后继续第二个问题,此时用户的第一个控制台框出现了 我仔细检查了一下:使用“下一步”,第一个问题的控制台出现了,但使用“nextLine”,它跳过了控制台框(用户没有机会键入任何内容),吐出“错误”,然后转到第二个问题,用户最终

下面是我在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等时,它又变得奇怪了。把它放到循环之外,出于某种原因,一切都很好。仍然不明白,但是,呃,不管怎样。