2014-06-23 50 views
1

我試圖創建類型測驗的對象,可容納25個對象,但每當我打印數組,我得到一個指針位置(隨機數「測驗@ 471e30」),而不是我的字符串問題。25類對象的數組

以下是問答類:

public class Quiz { 
    private static String questions; 

    public Quiz (String ask){ 
     questions=ask; 
    } 

    public String getQuestions(){ 
     return questions; 
    } 

    public void setQuestions(String ask){ 
     questions=ask; 
    } 
} 

這裏是主類:

public class QuizTime { 

    public static void main(String[] args) { 

     Quiz[] z= new Quiz[25]; 
     z[0]=new Quiz("what is your name?"); 
     System.out.println(z[0]); 
    } 
} 
+0

歡迎SO!永遠記住標記一種語言。我現在將它標記爲Java。如果我錯了,請編輯。 – yizzlez

+0

爲什麼要打印你的問題? Java如何知道你的問題(或者你正在建模的其他任何東西)? –

回答

0

沒有toString()方法,Java的自動打印出類的內存地址與System.out.println()。您可以實現toString()或做到這一點:

System.out.println(z[0].getQuestions()); 
+0

非常感謝您,先生,你是最棒的 – user3500147

1

Quiz類實現方法toString並返回到打印相應的字符串。

public String toString() { 
    return questions; 
} 

當然,這使你getQuestions()方法有點多餘,所以你也可以調用函數內部toString(),或與明確要求getQuestions()其他的答案中的一個去。

public String toString() { 
    return getQuestions(); 
} 
+0

另請參閱http://stackoverflow.com/questions/3615721/how-to-use-the-tostring-method-in-java – vda8888

0

假定你現有的作品,你需要添加一個方法調用到對象引用。類似於z [0] .getQuestion()。或者,您可以定義一個cusom .toString()方法來返回問題。

0

Z [0]爲競猜對象,而你要打印的是字符串命名的問題。嘗試改爲:

System.out.println(z[0].getQuestions());

或者,您可以覆蓋toString()方法,然後將打印的問題,如果你輸入:

System.out.println(z[0]);

0

除了字符串從Object#toString(),是這Javadoc描述爲 -

toString對於Object類方法返回一個由其中的對象是一個實例,該符號字符`的類的名稱的字符串@」,並且對象的哈希碼的無符號的十六進制表示。換句話說,該方法返回一個字符串等於值:

getClass().getName() + '@' + Integer.toHexString(hashCode()) 

你也有一個static場限制了您的Quiz一個(也是唯一一個)的問題。它可能應該是,

public class Quiz { 
    private String questions; 
    public Quiz (String ask){ 
    setQuestions(ask); 
    } 
    public String getQuestions(){ 
    return this.questions; 
    } 
    public void setQuestions(String ask){ 
    this.questions=ask; 
    } 
    @Override 
    public String toString() { 
    return getQuestions(); 
    } 
}