Java 我需要进行扫描仪检查,以查看输入是否为“;退出;,然后如果它';s不是,接受整数
我试图编写一个程序,从用户那里获取一个整数,但如果用户输入“quit”,也会结束程序。当我运行程序时,当我输入“退出”时,它会工作,但当我开始输入整数时,我会得到一个空行。如果我第二次输入整数,它会工作。我尝试了一些针对类似问题的建议,包括try/catch、将输入解析为Integer、启动空白扫描器#nextLine或扫描器#nextInt(并在所有这些选项之间来回切换)。这是我最近尝试的一个例子。如有任何见解,将不胜感激Java 我需要进行扫描仪检查,以查看输入是否为“;退出;,然后如果它';s不是,接受整数,java,string,int,Java,String,Int,我试图编写一个程序,从用户那里获取一个整数,但如果用户输入“quit”,也会结束程序。当我运行程序时,当我输入“退出”时,它会工作,但当我开始输入整数时,我会得到一个空行。如果我第二次输入整数,它会工作。我尝试了一些针对类似问题的建议,包括try/catch、将输入解析为Integer、启动空白扫描器#nextLine或扫描器#nextInt(并在所有这些选项之间来回切换)。这是我最近尝试的一个例子。如有任何见解,将不胜感激 int colInput; System.out.p
int colInput;
System.out.println(", please pick a column in which to place your token (1-8).");
System.out.println("(Type 'quit' to exit the game or 'restart' to start over.)");
System.out.print("Column Choice: ");
Scanner selectCol = new Scanner (System.in);
try {
if (selectCol.next().equals("quit"))
Connect4.close();
}
finally {
colInput = selectCol.nextInt();
}
在您提到的代码中,您正在使用扫描仪在行中找到的“下一个令牌”
if (selectCol.next().equals("quit"))
接收令牌并与“退出”进行比较。无论令牌最初的价值是多少,它都会在以后丢失。然后在finally块的稍后部分,您向扫描器请求一个新令牌。然后,他正在等待System.in提供的新值
要仅在符合“退出”的情况下从扫描仪接收令牌,应将行更改为
if (selectCol.next("quit"))
这样,您就可以使用Scanner类提供的方法 在您提到的代码中,您正在使用扫描仪在行中找到的“下一个令牌”
if (selectCol.next().equals("quit"))
接收令牌并与“退出”进行比较。无论令牌最初的价值是多少,它都会在以后丢失。然后在finally块的稍后部分,您向扫描器请求一个新令牌。然后,他正在等待System.in提供的新值
要仅在符合“退出”的情况下从扫描仪接收令牌,应将行更改为
if (selectCol.next("quit"))
这样,您就可以使用Scanner类提供的方法 在您提到的代码中,您正在使用扫描仪在行中找到的“下一个令牌”
if (selectCol.next().equals("quit"))
接收令牌并与“退出”进行比较。无论令牌最初的价值是多少,它都会在以后丢失。然后在finally块的稍后部分,您向扫描器请求一个新令牌。然后,他正在等待System.in提供的新值
要仅在符合“退出”的情况下从扫描仪接收令牌,应将行更改为
if (selectCol.next("quit"))
这样,您就可以使用Scanner类提供的方法 在您提到的代码中,您正在使用扫描仪在行中找到的“下一个令牌”
if (selectCol.next().equals("quit"))
接收令牌并与“退出”进行比较。无论令牌最初的价值是多少,它都会在以后丢失。然后在finally块的稍后部分,您向扫描器请求一个新令牌。然后,他正在等待System.in提供的新值
要仅在符合“退出”的情况下从扫描仪接收令牌,应将行更改为
if (selectCol.next("quit"))
这样,您就可以使用Scanner类提供的方法 您正在使用selectCol.next()消费下一个令牌。最后一个块中的nextInt()随后为空。您应该事先使用hasNext*()类型的方法,比如colInput.hasNextInt()。@Matthias,您能解释得更清楚一点吗?或者更好的是,您能提供一个代码示例吗?我应该在哪里插入colInput.hasNextInt()?顺便问一下,您的意思是选择col.hasNextInt()?当我尝试colInput.hasNextInt()时,Eclipse告诉我,我无法对基本类型int调用hasNextInt。当我尝试将selectCol.hasNextInt()放在colInput=selectCol.nextInt()之前时,我仍然遇到与我在原始帖子中所述相同的问题。请查看我建议的答案。您正在使用selectCol.next()使用下一个令牌finally块中的nextInt()随后为空。您应该事先使用hasNext*()类型的方法,比如colInput.hasNextInt()。@Matthias,您能解释得更清楚一点吗?或者更好的是,您能提供一个代码示例吗?我应该在哪里插入colInput.hasNextInt()?顺便问一下,您的意思是选择col.hasNextInt()?当我尝试colInput.hasNextInt()时,Eclipse告诉我,我无法对基本类型int调用hasNextInt。当我尝试将selectCol.hasNextInt()放在colInput=selectCol.nextInt()之前时,我仍然遇到与我在原始帖子中所述相同的问题。请查看我建议的答案。您正在使用selectCol.next()使用下一个令牌finally块中的nextInt()随后为空。您应该事先使用hasNext*()类型的方法,比如colInput.hasNextInt()。@Matthias,您能解释得更清楚一点吗?或者更好的是,您能提供一个代码示例吗?我应该在哪里插入colInput.hasNextInt()?顺便问一下,您的意思是选择col.hasNextInt()?当我尝试colInput.hasNextInt()时,Eclipse告诉我,我无法对基本类型int调用hasNextInt。当我尝试将selectCol.hasNextInt()放在colInput=selectCol.nextInt()之前时,我仍然遇到与我在原始帖子中所述相同的问题。请查看我建议的答案。您正在使用selectCol.next()使用下一个令牌finally块中的nextInt()随后为空。您应该事先使用hasNext*()类型的方法,比如colInput.hasNextInt()。@Matthias,您能解释得更清楚一点吗?或者更好的是,您能提供一个代码示例吗?我应该在哪里插入colInput.hasNextInt()?顺便问一下,您的意思是选择col.hasNextInt()?当我尝试colInput.hasNextInt()时,Eclipse告诉我不能对基本类型int调用hasNextInt。当我尝试将selectCol.hasNextInt()放在colInput=selectCol.nextInt()之前时,我仍然遇到和我在原始帖子中所说的相同的问题。请看我提出的答案。我在原始帖子中说解析是我已经尝试过的事情之一。不过,我还是(再次)尝试了你的建议,以防我在尝试之前做了一些稍微不同的事情。不幸的是,我仍然得到同样的结果。我现在知道我在应用你的解决方案时哪里出错了。它确实起作用了。非常感谢。我会的