java.lang.NumberFormatException при чтении из файла

Я пытаюсь создать базовую программу, она читает файл с неизвестным количеством чисел, расположенных в матрице, создает список массивов в формате String для его чтения, а затем анализирует его для int для нескольких других процессов. Я получаю java.lang.NumberFormatException при синтаксическом анализе, я знаю, что это, вероятно, из-за того, что пустое значение анализируется в int. Я просмотрел другие вопросы, но не могу их исправить. Вот часть кода:

public static void main(String[] args) {
    try {
            br = new BufferedReader(new FileReader(theFile));
            String line = null;

            while ((line = br.readLine()) != null) {                
                String[] aLine = line.split("/t");
                br.readLine();
                numLine.add(aLine);
            }
        } catch (IOException e){
        } finally {
            try {
                br.close();
            } catch (Exception e) {
            }
        }

    for (int i=0; i < numLine.size(); i++){
        for (int j = 0; j < numLine.get(i).length; j++){
            System.out.print(numLine.get(i)[j] + " ");
            //  if (!((numLine.get(i)[j]).equals("\t"))){
            intList.add(Integer.parseInt(numLine.get(i)[j]));
            //  }
        }
        System.out.println();
    }
}

И вот что пишет ошибка:

Exception in thread "main" java.lang.NumberFormatException: For input string: "6    10  9   10  12  "
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at readingTextFiles.Main.main(Main.java:34)

Пожалуйста, примите во внимание, что я начинающий программист, получил все это из исследований, поэтому я не совсем уверен, как работает теория.


person rodrigo villarreal    schedule 22.04.2015    source источник
comment
В какой строке вы получаете исключение.   -  person Prudhvi    schedule 22.04.2015
comment
@prudhvi Конечно, вы получаете его в intList.add(Integer.parseInt(numLine.get(i)[j])); вам не кажется?   -  person Nabin    schedule 22.04.2015
comment
Да, мне было лень сначала смотреть. Позвольте мне увидеть проблему.   -  person Prudhvi    schedule 22.04.2015
comment
я добавил ошибку, которую java печатает, чтобы вы могли взглянуть на нее   -  person rodrigo villarreal    schedule 22.04.2015


Ответы (2)


Измените разделитель, как упоминал @kayKay. Вы снова пытаетесь прочитать строку. думаю не стоит??

public static void main(String[] args) {
try {
    br = new BufferedReader(new FileReader(theFile));
    String line = null;

    while ((line = br.readLine()) != null) {
        String[] aLine = line.split("\t"); // Also as kaykay mentioned change /t to \t
        //br.readLine();  // You are reading the line again - Comment it out 
        numLine.add(aLine);
    }
} catch (IOException e){
} finally {
    try {
        br.close();
    } catch (Exception e) {
    }
}

for (int i=0; i < numLine.size(); i++){
    for (int j = 0; j < numLine.get(i).length; j++){
        System.out.print(numLine.get(i)[j] + " ");
        //  if (!((numLine.get(i)[j]).equals("\t"))){
        intList.add(Integer.parseInt(numLine.get(i)[j]));
    }
System.out.println();
}
person Sunil Rajashekar    schedule 22.04.2015
comment
я не могу поверить, что я сделал такие глупые ошибки, все равно спасибо за их решение, я желаю вам всего наилучшего - person rodrigo villarreal; 22.04.2015

Каков результат работы программы? Символ табуляции представлен \t, а не /t (line.split("\\t");). Кроме того, вам нужно будет добавить проверки того, что каждая строка, которую вы читаете, на самом деле является Integer

person kaykay    schedule 22.04.2015
comment
не заметил / t, я изменил его, и ошибка исчезла, но он печатает только строки 1 и 3 моего 4-строчного текстового файла. - person rodrigo villarreal; 22.04.2015
comment
Каково содержимое файла? - person kaykay; 22.04.2015
comment
Неважно. Проверьте ответ Сунила Раджашекара, почему это происходит. - person kaykay; 22.04.2015