좋아, 그래서 Java 응용 프로그램을 작성하여 CSV 파일을 가져온 다음 결과를 반복하여 배열로로드합니다. 예외를 통해 발생하지 않기 때문에 파일을 올바르게 가져올 것입니다. 내 문제는 내가 FileInputStream 레코드 수를 계산하려고 할 때 나는 무한 루프에 갇혀있다. 여기서 문제가 될 수 있습니다. Heres는 코드 :FileInputStream을 반복 할 때 무한 루프
이() 이동 호출하는 Main 메서드 내 클래스 :이 클래스 PopularNames (팝)입니다
public void go() {
pop = new PopularNames();
popGui = new PopularNamesGui();
String file = popGui.userInput("Enter the correct name of a file:");
pop.setInputStream(file);
pop.getNumberOfNames();
}
하고, 아래 방법에 나는에의 InputStream VAR을 설정하고 새로운 FileINputStream 파일 이름은 사용자가 제공합니다.
public void setInputStream(String aInputStream) {
try {
inputStream = new Scanner(new FileInputStream(aInputStream));
} catch (FileNotFoundException e) {
System.out.println("The file was not found.");
System.exit(0);
}
}
이것은 문제 해결 방법입니다. 나는 단순히 FileInputStream에 통해 반복 및 레코드의 수를 계산하고 여기서
public void getNumberOfNames() {
while (this.inputStream.hasNext()) {
fileDataRows++;
}
}
을 그것은 실제로'Scanner' 무언가의 이름'inputStream'를 사용하는 것은 좋은 생각입니다. 그것은 잠시 동안 선언을 보지 않을 때 매우 혼란스럽고, 실제'InputStream'에서 유효하지 않은 메소드 호출을 보게됩니다. 비슷하게'aInputStream'은 실제로'filename' 또는 이와 유사한 것처럼 들립니다. –
Jon이 말한 바 (+1), 합리적인 명명 표준을 따르지 않는 것은 "** 정말 ** 나쁜 생각입니다."라고 다시 말합니다. – Bohemian