this page의 하단에있는 코드를 사용하려고합니다. 여기에 내가 그것을 위해 생성 된 클래스의 코드는 다음과 같습니다Java 시도해 IOException 문제를 잡으십시오
import java.io.LineNumberReader;
import java.io.FileReader;
import java.io.IOException;
public class LineCounter {
public static int countLines(String filename) throws IOException {
LineNumberReader reader = new LineNumberReader(new FileReader(filename));
int cnt = 0;
String lineRead = "";
while ((lineRead = reader.readLine()) != null) {}
cnt = reader.getLineNumber();
reader.close();
return cnt;
}
}
내 목적은 텍스트 파일의 라인을 계산 정수로 그 번호를 저장 한 다음 내 주요 클래스에서 그 정수를 사용하는 것입니다. 필자는 주 수업 시간에 이것을 만들기위한 몇 가지 방법을 시도했지만 (새로운 프로그래머가 됨) 나는 뭔가를 놓치고있다. 여기에 내가 시도 제일 먼저 : 나는 오류가 이러한 시도와
String sFileName = "MyTextFile.txt";
private int lineCount = LineCounter.countLines(sFileName);
"보고되지 않은 예외 때 java.io.IOException가, 잡은 또는 슬로우 선언해야합니다." 나는 왜 내가 "countLines"메소드에서 예외가 선언 된 것을 볼 수 있기 때문에 나는 이것을 얻고 있는지 이해할 수 없다. 나는 게시 된 코드의 마지막 비트 바로 아래에서 try catch 블록을 사용하려고 시도했지만, 그 중 하나는 작동하지 않았다 (나는 올바르게 생각했다고 생각하지 않는다). 다음은 시도 시도입니다.
String sFileName = "MyTextFile.txt";
private int lineCount;{
try{
LineCounter.countLines(sFileName);
}
catch(IOException ex){
System.out.println (ex.toString());
System.out.println("Could not find file " + sFileName);
}
}
제발 보여주세요! 도와 주셔서 미리 감사드립니다.
대답은 기술적으로 정확합니다 (OP는 단순히 값을 참조에 할당하는 것을 잊어 버렸습니다).하지만 ** 정적 ** 이니셜 라이저 블록이 아닙니다. 그것은 단지 이니셜 라이저 블록입니다. – BalusC
첫 번째 코드는 완벽하게 작동합니다! 나는 너무 가까웠다 :) 두 번째 코드는 작동하지만 NetBeans는 while 루프가 비어 있다고 알려준다. 이 프로그램은 여전히 컴파일되고 실행되기 때문에 받아 들일 만합니다. – ubiquibacon
콘텐츠를 단순히 무시하는 것입니다.실제로는 선의 양에만 관심이 있습니다. 또는 내부에서 증가하는'int count'와 함께'BufferedReader'를 사용할 수도 있습니다. – BalusC