私の先生は、txtファイルを読み、各行を文字列としてアルファベット順に割り当てる必要があるプログラムを記述したいと思っています。 Scannerを使用してファイルを読み込もうとしましたが、charAt(0)メソッドを使用して各行の最初の文字を取得しようとしていますが、実行するたびに "スレッドのメイン" java.lang.StringIndexOutOfBoundsException:文字列のインデックスが範囲外です。0 "誰かが私がプログラムで行った間違いを指摘できれば、本当に感謝しています。charAt(0)は範囲外の文字列をスローします
TreeMap<Integer, String> list= new TreeMap<Integer, String>();
Scanner scan= new Scanner(System.in);
System.out.println("Enter file name");
String filename= scan.nextLine();
try{
scan= new Scanner (Paths.get(filename));
}
catch (IOException ioException)
{
System.err.println("Error opening file. Terminating.");
System.exit(1);
}
try
{
while(scan.hasNextLine())
{
String line= scan.nextLine();
char ch1 = line.charAt(0);
int key=(int) ch1;
list.put(key, line);
}
}
catch (IllegalStateException stateException)
{
System.err.println("Error reading from file. Terminating.");
System.exit(1);
}
これは、の最初の文字を取得しようとしている文字列が空であることを意味します。キャラクターを手に入れようとする前にそれをチェックする必要があります。 – Carcigenicate
ファイルに改行があります。 –
入力データに空白行があります。 – Thilo