【发布时间】:2013-01-30 19:05:55
【问题描述】:
我很难将文本文件中的每一行拆分为一个字符串数组并按照我的需要使用它。 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
【问题讨论】:
-
您似乎正在尝试解析 aplhabets 来代替数字。这就是为什么它的投掷
NumberFormatException可能是 charS -
不,下一个字符不是 S,它是数字 2。当我不解析直接打印出字符串 [0] 时,它会打印出 2。当我尝试将其解析为 int 时打印出来我得到这个错误。
-
那么它可能会添加空格尝试使用
String.trim()。Integer.parseInt(" 2")会抛出异常。向我们展示整个代码可能会更好。 -
错误信息显示你正在尝试
parseInt一个空字符串。 -
@MHZ 代替
fin.next()仅使用fin.nextLine();