在java中使用while循环进行字符检查(BufferedReader)
我正在使用eclipse; 我想通过用字符“y”| |“y”输入答案来检查用户是否想重新输入开关大小写。 但每当我输入char'Y'时,它就会进入do循环,但也会执行choice变量。当选择变量为int时;它引发数字格式异常在java中使用while循环进行字符检查(BufferedReader),java,do-while,Java,Do While,我正在使用eclipse; 我想通过用字符“y”| |“y”输入答案来检查用户是否想重新输入开关大小写。 但每当我输入char'Y'时,它就会进入do循环,但也会执行choice变量。当选择变量为int时;它引发数字格式异常 do { // asking user choices choice = Integer.parseInt(br.readLine()); switch(choice) { //
do
{
// asking user choices
choice = Integer.parseInt(br.readLine());
switch(choice)
{
// doing something
}
System.out.println("Do you want to continue?");
System.out.println("(Y/N)");
ans = (char) br.read();
}
while(ans == 'y' || ans == 'Y');
看到消息的“输入字符串”部分了吗?它告诉您,
parseInt
函数的输入为空。它是空的,因为它是您输入y
后的换行符。您需要阅读“continue”答案的整行,并从整行中获取字符。看到消息的“input string”部分了吗?它告诉您,parseInt
函数的输入为空。它是空的,因为它是您输入y
后的换行符。你需要读一整行的“continue”答案,并从这整行中提取字符。@SomeProgrammerDude已经解释了问题背后的原因。所以,我不是在重复。您可以修改代码,如下所示
Do you want to continue?
(Y/N)
y
// prints all my switch options
Exception in thread "main":
java.lang.NumberFormatException: For input string: ""
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at ArithemeticOperations.main(ArithemeticOperations.java:45)
@一些程序员已经解释了你问题背后的原因。所以,我不是在重复。您可以修改代码,如下所示
Do you want to continue?
(Y/N)
y
// prints all my switch options
Exception in thread "main":
java.lang.NumberFormatException: For input string: ""
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at ArithemeticOperations.main(ArithemeticOperations.java:45)
因为一旦按enter键,还可以打印回车符和换行符,这是另外两个字符。您需要检查输入的字符是否是其中之一,以便仅在其为INT时执行切换。您可以粘贴整个代码吗?@ScaryWombat技术上这不是关于
扫描仪
,但我猜问题是相同的。因为一旦按enter键,您还可以打印回车符和换行符,这是另外两个字符。您需要检查输入的字符是否是其中之一,以仅在其为INT时执行切换。您可以粘贴整个代码吗?@ScaryWombat技术上这不是关于扫描仪的问题,但我猜问题是相同的。感谢您花时间回答。虽然我会用@SomeProgrammerDude作为这个问题的答案;因为它解释了我问题的技术方面。尽管如此,再次感谢您为我的工作提供了解决方案。感谢您花时间回答。虽然我会用@SomeProgrammerDude作为这个问题的答案;因为它解释了我问题的技术方面。尽管如此,还是再次感谢您为我的工作提供了解决方案。感谢您为我的问题提供了合乎逻辑的方面。感谢您为我的问题提供了合乎逻辑的方面。