2015-10-26 54 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;