input.txtファイルを使用して作成する接続コンポーネントグラフの数を数えるプログラムを作成しています。 input.txtファイル内のテキストは次のようになります。私は10またはより大きな数に最初の行データ番号7を変更したときに入力ファイルから数値を読み取る際にエラーが発生しました
7 6 (enter)
0 1 (enter)
1 2 (enter)
2 0 (enter)
0 3 (enter)
3 2 (enter)
4 5 (enter)
そして、それがうまく機能は、しかし、これがなぜ起こるか
Exception in thread "main" java.lang.NumberFormatException: For input string: "0 "
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 Assignment41.main(Assignment41.java:28)
私にはわからない、このようなエラーメッセージが表示さこれをデバッグする方法.. 何か考えていますか?
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Assignment41 {
public static void main(String[] args) throws IOException {
BufferedReader in;
try {
in = new BufferedReader(new FileReader("input.txt"));
String graphGuide;
graphGuide = in.readLine();
int divider = graphGuide.indexOf(" ");
int NodeNum = Integer.parseInt(graphGuide.substring(0, divider));
int EdgeNum = Integer.parseInt(graphGuide.substring(divider + 1));
AdjList cc = new AdjList();
for(int i = 0; i < NodeNum; i++){
cc.insertVertex(i);
}
for(int j = 0; j < EdgeNum; j++){
String temp;
temp = in.readLine();
int v1 = Integer.parseInt(temp.substring(0, divider));
int v2 = Integer.parseInt(temp.substring(divider + 1));
cc.insertEdge(v1, v2);
cc.insertEdge(v2, v1);
}
for(int k = 0; k < NodeNum; k++){
cc.BFS(k);
System.out.printf(" ");
}
System.out.println();
System.out.println(cc.ccCount);
in.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
を使用することができます
int divider = graphGuide.indexOf(" "); int NodeNum = Integer.parseInt(graphGuide.substring(0, divider)); int EdgeNum = Integer.parseInt(graphGuide.substring(divider + 1));
を使用して、私は私のコードを固定し、それでもエラーが発生し...と、この時間は、メッセージが 例外スレッドでは「メインのようです"java.lang.NumberFormatException:入力文字列の場合:" " \t at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) java.lang.Integer.parseIntでjava.lang.Integer.parseInt(Integer.java:592) \t(Integer.java:615) Assignment41.mainで\t(Assignment41.java:29) 何べきで私はこうします。 –
これは、検索した 'String'のうちの別のものがトリミング後に空になったことを意味します。おそらく、分割方法が期待どおりに機能していない可能性があります。 – Mena