2015-10-26 50 views
-2

所以我寫了一個代碼,用於從txt文件中抓取行並創建一個包含數據的對象並將該對象添加到數組列表中,但是當我嘗試打印該對象時奇怪的事情發生。 這是主類:試圖打印一個對象並返回null

public class Main{ 
    static ArrayList<profesor>profesors = new ArrayList<profesor>(); 
    public static void main(String[]args) throws Exception{ 
     readList(); 
     for(int i=0;i<profesors.size(); i++){ 
      String p = profesors.get(i).toString(); 
      System.out.println(p); 

     } 

     fillTimetable(); 
     displayTimetable(); 


    } 
    private static void readList() throws Exception { 
     FileReader file = new FileReader("list.txt"); 
     BufferedReader reader=new BufferedReader(file); 
     String line =reader.readLine(); 
     String lineSplit[]= new String[27]; 
     while(line != null){ 
      lineSplit = line.split("\\s+"); 
      profesors.add(new profesor(lineSplit[0], lineSplit[1], new String[]{ lineSplit[2], lineSplit[3], lineSplit[4], lineSplit[5], lineSplit[6], lineSplit[7],lineSplit[8], lineSplit[9], lineSplit[10], lineSplit[11], lineSplit[12], lineSplit[13], lineSplit[14], lineSplit[15], lineSplit[16], lineSplit[17], lineSplit[18], lineSplit[19], lineSplit[20], lineSplit[21], lineSplit[22], lineSplit[23], lineSplit[24], lineSplit[25], lineSplit[26]})); 
      line = reader.readLine(); 

     } 

    } 
    private static void fillTimetable() { 
     // TODO Auto-generated method stub 

    } 
    private static void displayTimetable() { 
     // TODO Auto-generated method stub 

    } 

} 

此其PROFESOR類:

import java.util.Arrays; 

public class profesor { 
    private String name; 
    private String subject; 
    private String[] avalidehours=new String[25]; 

    public profesor(String string, String string2, String[] strings) { 

     string = name; 
     string2 = subject; 
     strings = avalidehours; 
    } 
    public String toString(){ 
     return name + subject + Arrays.toString(avalidehours); 
    } 

} 

的TXT:

Petittsdfi Mateasdfmatica mif mig vif vig ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 
Csdfales Apeasddsca luc lud mac mad mic mid juc jud ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 
Lucsdfdfero NavasdsdegacionI lub luc lud lue mab mac mad mae mib mic mid mie jub juc jud jue vib vic vid vie ññ ññ ññ ññ ññ 
Bergamaschi TecPasdsdesc lua luf maa maf mia mif jua juf via vif ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 
Mazzssa MeteoasffrologiaI mab mac jub juc ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 
Puesdfdla ComunicaasdcionesI lua lub luc lud maa mab mac mad mia mib mic mid jua jub juc jud via vib bic bid ññ ññ ññ ññ ññ 
Chifdsatti IngTasddecI mib mic mid mie jub juc jud jue ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 
Jimesdfdfnez Superviasdfvencia maa mab jua jub ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 
Rusbissno ManasddiobraI mab mac mad mae maf mib mic mid mie mif ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 
Veldfsasco MaquinasI vib vic vid vie vif ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 
Luscsro EquiposElectronicos lub luc lud lue mab mac mad mae mib mic mid mie jub juc jud jue vib vic vid vie ññ ññ ññ ññ ññ 
Ateasdnas PrimerosAux vib vic vid vie ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 
Fustafer CargaasfEstiva lue luf lug mae maf mag mie mif mig jue juf jug vie vif vig ññ ññ ññ ññ ññ ññ ññ ññ ññ ññ 

與此其我所得到的,當我運行程序:

nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
nullnull[null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null] 
+0

開始調試自己的工作,回來的時候,你有一個問題。 – John3136

回答

4
public profesor(String string, String string2, String[] strings) { 

    string = name; 
    string2 = subject; 
    strings = avalidehours; 
} 

應該

public profesor(String string, String string2, String[] strings) { 

    this.name = string; 
    this.subject = string2; 
    this.avalidehours = strings; 
} 

你shouldreally,真正考慮選擇更好的變量NAES,尊重的Java命名約定,並使用循環而thanenumerating由一個25個avalidehours元素之一。

另外,在讀取文件時使用try-with-resources語句,以確保閱讀完畢後讀者關閉。

+0

我認爲在引用具有不同名字的本地私人通過增值稅的時候,應該要求「這個」呼叫,但仍然會放棄! – 34638a

+4

這不是,但使用它的要點是明確指出構造函數從參數初始化字段,而不是從字段初始化參數。傳統的做法是以與字段相同的方式命名參數,並使用'this.foo = foo;'。 –

0

你在你的profesor構造反轉幽會:

string = name; 

應該

name = string;