0

我很难将文本文件中的每一行拆分为字符串数组并像我需要的那样使用它。split() 似乎工作正常。我最终得到了一个字符串数组,其中字符串数组的第一个槽包含一个我需要解析为 int 的数字,以继续我的代码。出于某种原因,我不断收到下面显示的错误,我似乎无法弄清楚。

我的目标是简单地将包含字母的文本文件的每一行存储在一个数组中,并将将成为该行的第一个值的数字解析为一个整数。完成此操作后,我需要能够独立使用前面的每组字母,因此我也尝试将它们放入数组中。

我很感激这方面的任何帮助。

提前谢谢了!

注意:numGrammars 是文本文件第一行显示的第一个数字。

我的代码

    numGrammars = Integer.parseInt(fin.next());
    System.out.println("Num Grammars:" + numGrammars);


    for(int v=0; v < numGrammars; v++){
       int numVariables = Integer.parseInt(fin.next());
       System.out.printf("numVariables: %s", numVariables);

        for(int z=0; z < numVariables; z++){
            //reads in variable line
            String line = fin.nextLine();
            String[] strings = line.split(" ");

            for(int m=0; m < strings.length; m++){
               int numRules = Integer.parseInt(strings[0]);
               //All other array slots in strings array should be groups of letters on group per slot...

            }   
        }
    }

控制台输出

Num Grammars:2
numVariables: 3Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Methods.readFile(Methods.java:34)
at Main.main(Main.java:12)

我正在阅读的文本文件:

1
3
2 S AB BB
3 A BB a b
2 B b c
4

2 回答 2

2

仅使用fin.nextLine(). 在调用 之后next(),光标就在 numVariables value 之后3,但换行符之前。当您nextLine()在那之后调用时,它会返回光标和换行符之间的所有内容,这是一个空字符串!nextLine()每次使用总是将光标放在换行符之后,一切正常。

numGrammars = Integer.parseInt(fin.nextLine());
System.out.println("Num Grammars:" + numGrammars);


for(int v=0; v < numGrammars; v++){
   int numVariables = Integer.parseInt(fin.nextLine());
   System.out.printf("numVariables: %s", numVariables);

    for(int z=0; z < numVariables; z++){
        //reads in variable line
        String line = fin.nextLine();
        String[] strings = line.split(" ");

        for(int m=0; m < strings.length; m++){
           int numRules = Integer.parseInt(strings[0]);
           //All other array slots in strings array should be groups of letters on group per slot...

        }   
    }
}
于 2013-01-30T21:07:03.870 回答
-2

你没有说 fin 是什么,所以我不能说它对 next() 和 nextLine() 有什么作用,但也许你在字符串中选择换行符。

于 2013-01-30T19:39:26.123 回答