Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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中使用while循环进行字符检查(BufferedReader)_Java_Do While - Fatal编程技术网

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

在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) { //

我正在使用eclipse; 我想通过用字符“y”| |“y”输入答案来检查用户是否想重新输入开关大小写。 但每当我输入char'Y'时,它就会进入do循环,但也会执行choice变量。当选择变量为int时;它引发数字格式异常

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作为这个问题的答案;因为它解释了我问题的技术方面。尽管如此,还是再次感谢您为我的工作提供了解决方案。感谢您为我的问题提供了合乎逻辑的方面。感谢您为我的问题提供了合乎逻辑的方面。