Den4xCode
@Den4xCode
Coder

Почему не работает код (BufferedReader)?

package com.company.Labs.lab_5.File;// Вывод чисел и строк в текстовый файл

import com.company.Labs.lab_5.Collection.ex1_2.A;

import java.io.*;
import java.util.ArrayList;
import java.util.LinkedList;

import static java.lang.Integer.*;

public class Main {
    public static void main(String[] args) throws Exception {

        File file = new File("C:\\Users\\Даниил\\Desktop\\Java Projects\\JavaUniversity\\1\\src\\com\\company\\Labs\\lab_5\\File\\1.txt");
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));


        ArrayList<Product> arrayList = new ArrayList<>();
        int position = 0;
        String line;

        while ((line = reader.readLine()) != null) {

            Product product = new Product();

            String[] str_array = line.split("/");

            product.setId(Integer.parseInt((str_array[0])));  // 28 строка с якобы ошибкой 
            product.setName(str_array[1]);
            product.setPrice(Double.parseDouble(str_array[2]));

            arrayList.add(position, product);

            position++;

        }

        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i).getId() + "/" + arrayList.get(i).getName() + "/" + arrayList.get(i).getPrice());
        }

        reader.close();
    }
}


пишет ошибку, хотя по логике все верно...

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at com.company.Labs.lab_5.File.Main.main(Main.java:28)

Process finished with exit code 1
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
Bavashi
@Bavashi
File file = new File("C:\\Users\\Даниил\\Desktop\\Java Projects\\JavaUniversity\\1\\src\\com\\company\\Labs\\lab_5\\File\\1.txt");

Попробую предположить, что вы подцепляете лишние символы из этого файла. Если это так, то нужно заменить:
product.setId(Integer.parseInt((str_array[0])));
на
product.setId(Integer.parseInt((str_array[0].replaceAll("[^0-9]", ""))));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы