У меня есть текстовый файл, содержащий одно число, и я загружаю его с помощью этого метода:

BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader("res/sheet.cfg"));
    } catch (FileNotFoundException e1) {
        e1.printStackTrace();
    }
    try {
        StringBuilder sb = new StringBuilder();
        String line = br.readLine();

        while (line != null) {
            sb.append(line);
            sb.append('\n');
            line = br.readLine();
        }
        textureSize = Integer.valueOf(sb.toString());
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Эта строка:

textureSize = Integer.valueOf(sb.toString());

Выдает эту ошибку:

Exception in thread "main" java.lang.NumberFormatException: For input string: "16"

Я понимаю, в чем проблема, но как ее исправить? Нужно ли мне создавать временную строку, чтобы удалить цитаты, а затем получить значение этой строки и передать его в textureSize?

0
user1650305 30 Дек 2013 в 08:40

2 ответа

Лучший ответ

Это проблема

sb.append('\n');

Не делай этого. Integer.valueOf принимает только цифры во входной строке, новая строка не допускается

5
Evgeniy Dorofeev 30 Дек 2013 в 05:03

Integer.valueOf не допускает завершающих или ведущих пробельных символов. Обрезка строки перед синтаксическим анализом должна решить проблему:

textureSize = Integer.valueOf(sb.toString().trim());

А еще лучше удалите код, который добавляет новую строку в первую очередь.

5
Sergey Kalinichenko 30 Дек 2013 в 04:43