Vì vậy, tôi gặp sự cố khi đọc tệp văn bản trong chương trình của mình. Đây là mã:Sử dụng BufferedReader.readLine() trong một vòng lặp while đúng cách
try{
InputStream fis=new FileInputStream(targetsFile);
BufferedReader br=new BufferedReader(new InputStreamReader(fis));
//while(br.readLine()!=null){
for(int i=0;i<100;i++){
String[] words=br.readLine().split(" ");
int targetX=Integer.parseInt(words[0]);
int targetY=Integer.parseInt(words[1]);
int targetW=Integer.parseInt(words[2]);
int targetH=Integer.parseInt(words[3]);
int targetHits=Integer.parseInt(words[4]);
Target a=new Target(targetX, targetY, targetW, targetH, targetHits);
targets.add(a);
}
br.close();
}
catch(Exception e){
System.err.println("Error: Target File Cannot Be Read");
}
Tệp tôi đọc từ 100 dòng đối số. Nếu tôi sử dụng vòng lặp for thì nó hoạt động hoàn hảo. Nếu tôi sử dụng câu lệnh while (người nhận xét ở trên vòng lặp) thì nó dừng ở mức 50. Có khả năng người dùng có thể chạy chương trình với một tệp có số dòng bất kỳ, vì vậy việc triển khai vòng lặp hiện tại của tôi giành được ' t làm việc.
Tại sao dòng while(br.readLine()!=null)
dừng ở mức 50? Tôi đã kiểm tra các tập tin văn bản và không có gì có thể treo nó lên.
Tôi không nhận được bất kỳ lỗi nào từ try-catch khi tôi sử dụng vòng lặp while nên tôi bị bối rối. Ai có ý tưởng gì không?
Cảm ơn bạn! Tôi chắc chắn đã nhận thấy điều này. Bạn có biết cách giải quyết nào không? – billg118
Cú pháp '((line = br.readLine())! = Null)' được cho phép trong Java, phải không? – jpm
@jpm: Có; đó là cách tốt nhất để làm điều này. (mặc dù tôi muốn đặt 'null' trước để làm cho nó rõ ràng hơn) – SLaks