"items.txt"파일에서 입력을 받고 "changes.txt"에 따라 행을 추가 또는 제거하고 다른 파일로 출력하는 프로그램을 작성 중입니다. Java StringIndexOutOfBoundsException
이
는 "items.txt"파일입니다101,Nail #1
102,Nail #2
103,Nail #3
104,Hammer Small
105,Hammer Large
이것은 변경 파일 :
A,106,Chainsaw 12"
D,102
d,104
a,107,Chainsaw 10"
이것은 (void changes()
은 행 번호 132)에 문제가 내 방법입니다 :
void changes() {
try {
fileChange = new Scanner(new File("changes.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
fileChange.useDelimiter(",|\r|\n");
while (fileChange.hasNext()) {
String codeStr = fileChange.next();
if ((codeStr.charAt(0) == 'D') || (codeStr.charAt(0) == 'd')) {
delete(fileChange.nextInt());
System.out.println("delete");
} else if ((codeStr.charAt(0) == 'A') || (codeStr.charAt(0) == 'a')) {
add(fileChange.nextInt(), fileChange.next());
System.out.println("add");
} //else
System.out.println("done");
}
fileChange.close();
}
이
내가 얻을 출력add
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
done
이전에 문제를 진단하는 데 도움이되도록 '추가'및 '완료'에 대한 인쇄문을 추가했습니다. "add"와 "done"을 출력해도 아무것도 출력 파일로 보내지지 않습니다. 이것은 StringIndexOutOfBoundsException에 의한 것일 것입니다.
이것은 스택 오버플로에 대한 나의 첫 번째 질문이므로 서식 문제 또는 부적절한 예의에 대해 기다려주십시오.
코드를 단계별로 실행하여 디버거를 사용하십시오. 충돌 할 때 사용하는 값을보십시오. – Robert
나중에 반복이 예외를 throw 할 수 있습니다. (sry, 나는 지금 술에 취해있다.) 어떤 줄이 예외를 던집니까? –
아마도 빈 입력의 첫 번째 문자를 검사하려고 시도 할 것입니다. – Robert