2015-12-15 19 views
-1

有人可以解釋爲什麼我運行此程序時沒有打印任何內容嗎?輸出數組信息使用toString方法

public class Teacher { 

public static void main(String [] args) { 

    Teacher [] teacher = new Teacher[2]; 
    teacher[0] = new Teacher ("Jack Campbell", 74); 
    teacher[1] = new Teacher ("Mary Smith", 69; 
    } 
} 


public class testTeacher { 

    String name; 
    int age; 

    public testTeacher (String name, int age) { 
    } 

    public String toString() { 
    String teacher = name; 
    teacher += getAge(); 
    teacher += "Age is" + age; 
    return teacher; 
    } 

    public void setName (String nam) { 
     name = nam; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setAge(int Age){ 
     age = Age; 
    } 

    public String getAge() { 
     return age; 
    } 
} 

我在這裏錯過了什麼?我認爲它與toString方法有關,但我不積極。在我的代碼中說,這個方法從來沒有用過,我不確定爲什麼。

+0

你的主要方法在哪裏? –

+0

編輯它,完全忘了。它編譯和構建,但運行時不輸出任何內容。我所要做的就是使用toString打印出教師姓名和年齡。 我也必須使用for循環。 – Ralphie

+1

首先,你錯過了'toString()'方法的右括號(你也缺少'@ Override'註解,但這更像是一個樣式問題)。你永遠不會在構造函數中設置'name'或'age'的值,所以在調用它們各自的setter之前它們將一直是空白的。你將老師的年齡加到字符串兩次,你可能不打算這樣做。您添加的'main'方法也缺少右括號。說了這麼多,你永遠不會調用任何一個對象的'toString()'方法。 – JonK

回答

0

這是你可以寫:

class Teacher { 

    public static void main(String [] args) { 
    Teacher [] teacher = new Teacher[2]; 
    teacher[0] = new Teacher ("Jack Campbell", 74); 
    teacher[1] = new Teacher ("Mary Smith", 69); 
    System.out.println(teacher[0].toString()); 
    } 

    String name; 
    int age; 

    public Teacher (String name, int age) { 
    this.name = name; 
    this.age = age; 
    } 

    @Override 
    public String toString() { 
    String teacher = name; 
    teacher += "Age is" + age; 
    return teacher; 
    } 
} 
+0

這樣就解決了構造問題。非常感謝:) 如果我想打印既使用for循環 教師'(INT I = 0; I Ralphie

+0

明白了。謝謝您的幫助 :) – Ralphie

0

如果你想打印所有的老師在陣列中:

for (int i=0; i < teacher.length; i++) { 
System.out.println(teacher[i].toString();) 
} 

我會建議你做有關對象orientied編程的一些基本的Java教程,數組和循環。還要確保使用像eclipse(免費軟件)這樣的良好開發環境來獲得良好的代碼高亮和有意義的錯誤消息。