2013-11-25 65 views
0

這是我的計劃緩衝閱讀器無法讀取某些行

 String thisSchool=buffer.readLine(); 
     String thisLine; 

     while((thisLine = buffer.readLine()) != null){ 
      if(thisLine=="*") 
      { 
       thisSchool=buffer.readLine(); 
      } 
      else 
      { 
       School school = new School(thisSchool); 
       Student student = new Student(thisLine, school); 
       StudentList.add(student); 
      } 
     } 

我的文本文件讀取像這樣:

School1 
A 
B 
C 
* 
School2 
D 
E 
* 
School3 
F 

我的驅動程序類的輸出是:

A School1 
B School1 
C School1 
* School1 
School2 School1 
D School1 
E School1 
* School1 
School3 School1 
F School1 

這是我希望它看起來像

A School1 
B School1 
C School1 
D School2 
E School2 
F School3 

這裏的問題看起來什麼是 的「currentSchool」變量是永遠不會改變的,我不知道爲什麼! 「*」被視爲學生(我想用它作爲分隔符,即當程序遇到時它會忽略它)。相反,「如果行= *」命令被完全忽視,因此,學校從未改變,學生在被寫入錯誤

回答

1
if(thisLine=="*") 

不要使用「==」 TP比較對象。

使用equals()方法:

if(thisLine.equals("*")) 
+0

哇,我覺得現在真的不好... :) 謝謝! – user3000877

+0

==比較有用,但在這種情況下不適用。 ==用於確定兩個基元是否相同,或者兩個對象是否是同一個對象。在這種情況下,它不起作用,因爲thisLine和「*」來自不同的來源,所以即使它們是相同的,它們也永遠不會==。這就是爲什麼你使用.equals(...) – Vitruvius

+0

是的,我知道比使用==更好......我只是太專注於另一個語法錯誤,以注意到我的錯誤 – user3000877