텍스트 파일을 가져 와서 >
공백으로 나누고 Integer.parseInt()
및 Double.parseDouble()
을 사용하여 숫자를 조작하는 Java 프로그램을 작성하고 있습니다.토큰 화 된 배열의 빈 공간
그러나 내 프로그램을 실행하려고 할 때마다 내 프로그램이 토큰에 대해 빈 공간을 차지하고 있기 때문에 NumberFormatException
이 표시됩니다. 아래는 내 코드, 텍스트 파일 및 오류입니다.
코드 :
try {
Scanner scanner = new Scanner(file);
while(scanner.hasNextLine()){
String line = scanner.nextLine();
String[] tokens = line.split(" |>");
State s = new State(Integer.parseInt(tokens[1]), 0,
Double.parseDouble(tokens[0]), null);
states.put(s.state, s);
for(int i = 3; i < tokens.length; i++) {
if(tokens[i + 2] == null || tokens[i] == "")
break;
else
edges.add(new Edge(Integer.parseInt(tokens[i]),
Double.parseDouble(tokens[i + 1])));
}
}
scanner.close();
} catch (FileNotFoundException e) {
System.err.println("Error: file could not be found");
}
텍스트 파일을 구문 분석 :
1 0 > 1 6 2 6 3 6
1 1 > 4 -1
1 2 > 8 -1
1 3 > 9 -1
1 4 > 1 -1 5 -1 6 -1
1 5 >
1 6 > 7 -1 8 -1
1 7 >
1 8 > 7 -1
0 9 >
오류 메시지 :
Exception 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 csu.mcdonald.ASrch.main(ASrch.java:33)
이 오류가 발생할 라인을 줄 수 있습니까? – Mzf
'states' 란 무엇이고'Edge' 클래스는 어떻습니까? 또한'State'는 커스텀 클래스 인 것처럼 보입니다. –
죄송합니다. 'states'는 프로그램에서 사용하게 될 상태의리스트를 담고있는'HashMap'이며,'Edge'와'State'는 꽤 다른 클래스들입니다. – Delfino