在java中使用while循环进行Char检查(BufferedReader)

时间:2016-12-12 07:16:27

标签: java do-while

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)

2 个答案:

答案 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"));