2015-05-05 78 views
0

在我的程序中,我正在從一個.dat文件中讀取數據,我希望while循環在到達空行時停止。在我的代碼中,我將它設置爲當單詞[0]等於null時,它將停止。但這不會發生,我最終得到一個錯誤。當我將其改爲單詞[0]!= null或!=「」似乎都不起作用。空白行不作爲null存儲,while循環將不會終止

DAT

1 2 
1 3 
2 2 
2 3 
2 6 
3 4 
3 5 
4 1 
4 4 
4 5 
5 5 
5 6 
5 7 
5 9 
6 1 
6 8 
7 7 
7 8  
7 9 
8 8 
8 10 
9 8 
9 10 
10 10 
10 4 

1 10 10 
1 5 2 
2 4 7 
3 9 4 
3 10 1 
3 4 3 
5 8 2 
9 10 1 
7 10 4 
6 9 3 
2 9 5 
4 8 2 

程序

import java.util.*; 
import java.io.*; 

public class matrix{ 

public static void main(String[] args){ 
int[][] arrayNums = new int[9][9]; 
String[] words = new String[10]; 

// Location of file to read 
    File file = new File("p8.dat"); 

try {   
    BufferedReader br = new BufferedReader(new FileReader(new File("p8.dat"))); 

    words[0]="-1";//TO initiate while loop  
    while(words[0] != null){ 
    words=br.readLine().split(" "); 

     if(words[0]!= null){ 


      int num=Integer.parseInt(words[0]); 
      int numTwo=Integer.parseInt(words[1]); 

      System.out.println(num+" "+numTwo); 
}//END IF 



}//END WHILE 


    }//END TRY--------------------------------------------------------- 

catch(Exception e){ 
    System.err.println("Error: Target File Cannot Be Read"); 
} 

}//end main----------------------------------------------------------- 
}//end class 

輸出

1 2 
1 3 
2 2 
2 3 
2 6 
3 4 
3 5 
4 1 
4 4 
4 5 
5 5 
5 6 
5 7 
5 9 
6 1 
6 8 
7 7 
7 8 
7 9 
8 8 
8 10 
9 8 
9 10 
10 10 
10 4 
Error: Target File Cannot Be Read 

回答

2

停止時,它得到的空白行。在我的代碼我把它設置爲當字[0]等於null它將停止

如果到達流的末尾,一個BufferedReader只會返回null。要檢查空行,請檢查返回的字符串的長度 - 如果長度爲0,那麼您已經到達空行(您也可以選擇修剪行以確保計算長度時省略前導空白和尾隨空白)

String line = br.readLine(); 

if(line.trim().length() != 0){ 
    //line is not empty 
} 
+0

好的,可以解釋你的意思是流尾,以備將來參考。 – cmehmen

+0

_在讀取File_的上下文中,「流結束」表示文件的結尾。 – copeg

0
try 
{   
    BufferedReader br = new BufferedReader(new FileReader(new File("p8.dat"))); 

    while (true) 
    { 
     String line = br.readLine(); 

     if (line == null) 
     { 
       // end of file! then exit the loop 
       break; 
     } 
     if (line.trim().length() == 0) 
     { 
      // the line is empty! then goto next line 
      continue; 
     } 

     String[] words = line.split(" "); 

     int num=Integer.parseInt(words[0]); 
     int numTwo=Integer.parseInt(words[1]); 

     System.out.println(num+" "+numTwo); 
    } 
}