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
Няма значение. Проверете отговора на Sunil Rajashekar за причината, поради която това се случва - person kaykay; 22.04.2015