2013-06-11 64 views
2

我想了解更多關於Java中的構造函數。在Java中使用構造函數

以下是我的代碼。我試圖打印一個整數值(加法和減法),但我的輸出是一些隨機數字。

public class MyNumber { 

    private int number; 

    public MyNumber(int number) { 
     this.number = number; 
    } 

    public int getNumber() { 
     return number; 
    } 

    public MyNumber add(MyNumber another) { 
     return new MyNumber(this.number + another.number); 
    } 

    public MyNumber sub(MyNumber another) { 
     return new MyNumber(this.number - another.number); 
    } 

    public static void main(String args[]) { 
     MyNumber myNumber = new MyNumber(2); 
     MyNumber c = myNumber.add(myNumber); 
     System.out.println(c); 
     MyNumber d = myNumber.sub(myNumber); 
     System.out.println(d); 
    } 
} 

這是我的輸出:

[email protected] 
[email protected] 

請指教。我對Java很陌生,任何解釋都非常感謝。

+0

覆蓋'toString()'方法輸出'number'。 – GriffeyDog

+0

下面是輸出iam越來越[email protected] [email protected] – tom

+0

順便說一句,閱讀Oracle的官方Java教程是非常有用的,他們是非常好的,很容易理解:[The Java™教程](http://docs.oracle.com/javase/tutorial/) – informatik01

回答

6

覆蓋toString方法等println輸出你想要的數字。

@Override 
public String toString() { 
    return String.valueOf(number); 
} 

System.out.println電話toString()作爲參數傳遞的對象,從類Object返回此[email protected]事情toString()默認實現。您需要覆蓋它,如上所示。

更多的信息在Java docs

此外,當operator +應用於連接到String的對象時,將調用toString()

String a = "b" + new Integer(1); // "b1" 
+3

這是正確的答案,但看到他是新的,你可能想詳細說明他爲什麼要重寫'toString( )'方法。 – WilliamShatner

+0

可能要大致解釋什麼是十六進制數字,類名和'@'在做什麼。 –

+0

我沒有意識到,默認的toString與對象的println輸出相關,但它是有道理的,因爲他將一個對象而不是顯式字符串傳遞給println。我在這裏學到了...謝謝。 – djangofan

3

每個Java對象(例如myNumber)從java.lang.Object繼承和擁有toString()方法,該方法是把當你調用System.out.println(myNumber);使用。默認形式的toString()方法會打印您看到的(apparently)隨機數據。爲了打印包含在MyNumbernumber變量的值,你只需重寫toString()方法是這樣的:

@Override 
public String toString() { 
    return String.valueOf(number); 
} 
1

在這裏你去,

公共類mynumber的{

private int number; 
    public MyNumber(int number){ 
     this.number = number; 
    } 
    public int getNumber(){ 
     return number; 
    } 
    public MyNumber add(MyNumber another){ 
     return new MyNumber(this.number + another.number); 
    } 
    public MyNumber sub(MyNumber another) { 
      return new MyNumber(this.number - another.number); 
     } 

    public String toString() { 
     return String.valueOf(number); 
    } 

    public static void main(String args[]) 
    { 
     MyNumber myNumber = new MyNumber(2); 
     MyNumber c=myNumber.add(myNumber); 
     System.out.println(c.toString()); 
     MyNumber d= myNumber.sub(myNumber); 
     System.out.println(d.toString()); 
    } 
} 
+0

非常感謝你,我可以在Grzegorz的幫助下解決這個問題 – tom

+0

不客氣,我剛纔也有同樣的問題,Grzegorz的提示是關鍵。 – zee