Программа считывающая строку ловит NumberFormatException

93
09 августа 2019, 17:10
package check;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class CheckByteStream {
    public static boolean isNumber(InputStream in) throws IOException {
        int num;
        boolean result = false;
        try (BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
            System.out.println("Enter your number to check, for stop program enter '0'");
            do {
                num = Integer.valueOf (br.readLine());
                System.out.println("Number " + num);
                System.out.println(num);
                if (num % 2 == 0) {
                    System.out.println("Your number is even: " + num);
                    result = true;
                } else {
                    System.out.println("Your number isn't even: " + num);
                }
            } while (br.read()!=0);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }
    public static void main(String[] args) throws IOException {
        isNumber(System.in);
    }
}

И ошибка:

"C:\Program Files\Java\jdk-10.0.2\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar=51793:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath C:\projects\AVysotskiy\chapter_007\target\classes;C:\Users\Sanek\.m2\repository\net\jcip\jcip-annotations\1.0\jcip-annotations-1.0.jar check.CheckByteStream
Enter you number to check, for stop program enter '0'
1
Number 1
1
You number isn't even: 1
2
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.base/java.lang.Integer.parseInt(Integer.java:662)
    at java.base/java.lang.Integer.valueOf(Integer.java:983)
    at check.CheckByteStream.isNumber(CheckByteStream.java:15)
    at check.CheckByteStream.main(CheckByteStream.java:32)
Process finished with exit code 1
Answer 1

while (br.read()!=0) вычитывает "2" из потока в котором остается только перевод строки.

Замените на while(num != 0)

READ ALSO
Генерация случайного числа от a до b

Генерация случайного числа от a до b

Сделал вот такМожно ли сделать решение проще и корректно ли моё решение?

100
Spring security - Request method 'POST' not supported

Spring security - Request method 'POST' not supported

Ошибка вылетает при попытке залогинится

96
Как сделать окно сохранения данных с русскими кнопками в java?

Как сделать окно сохранения данных с русскими кнопками в java?

У меня проект на java, я сделал опцию сохранения данных через JFileChooserНачальство мне высказало замечание, дескать, проект под русскоязычного...

151
Доступ к чтению файлов из внутреннего хранилища

Доступ к чтению файлов из внутреннего хранилища

Имеется следующий код метода:

125