Java: 파일에서 정수를 배열로 읽기
File fil = new File("Tall.txt");
FileReader inputFil = new FileReader(fil);
BufferedReader in = new BufferedReader(inputFil);
int [] tall = new int [100];
String s =in.readLine();
while(s!=null)
{
int i = 0;
tall[i] = Integer.parseInt(s); //this is line 19
System.out.println(tall[i]);
s = in.readLine();
}
in.close();
Tall.txt 파일을 사용하여 그 파일에 포함된 정수를 이라는 배열에 쓰려고 합니다. 이 작업을 어느 정도 수행하지만 실행하면 다음과 같은 예외가 발생합니다 (:
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 BinarySok.main(BinarySok.java:19)
정확히 왜 이런 현상이 발생하며 어떻게 제거할 수 있나요? 제가 보기에는 파일을 문자열로 읽은 다음 정수로 변환하는데, 이는 불법이 아닙니다.
13
3
파일에 빈 줄이 있어야 합니다.
parseInt 호출을 &
시도
블록으로 감싸는 것이 좋습니다:또는 구문 분석 전에 빈 문자열이 있는지 확인합니다:
루프 내에서 인덱스 변수
i
를 초기화하면 항상 0이 된다는 점에 유의하세요. 선언을while
루프 앞에 옮겨야 합니다. (또는for
루프의 일부로 만들 수도 있습니다.)Java가 빈 문자열을 숫자로 변환하려고 하는 것 같습니다. 일련의 숫자 끝에 빈 줄이 있나요?
다음과 같이 코드를 수정할 수 있습니다.
서로 다른 줄 끝이 혼동될 수 있습니다. Windows 파일은 각 줄을 캐리지 리턴과 줄 바꿈으로 끝냅니다. Unix의 일부 프로그램은 캐리지 리턴을 줄 끝으로 인식하고 줄 바꿈을 또 다른 줄 끝으로 인식하기 때문에 해당 파일을 각 줄 사이에 여분의 빈 줄이 있는 것처럼 읽습니다.