テキストファイルの各行を文字列の配列に分割し、必要に応じて使用するのは非常に困難です。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