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');
我正在使用eclipse; 我想通过char'y'||输入他的答案来检查用户是否想要重新进入开关案例'Y'。 但每当我输入char'Y'时它进入do循环但也执行选择变量。因为选择变量是int;它会引发数字格式异常。
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)
答案 0 :(得分:2)
看到“输入字符串”部分消息?它告诉您parseInt
函数的输入为空。并且它是空的,因为它是您输入y
后的换行符。你需要为“继续”答案读一整行,然后从那整行中获取角色。
答案 1 :(得分:0)
@SomeProgrammerDude已经解释了你的问题背后的原因。所以,我不是在重复它。您可以修改您的代码,如下所示。
String ans;
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 = br.readline();
}while(ans.toLowerCase().equals("y"));