2013-04-04 127 views
0

我正在Java上使用實例作爲參數來寫分數操作的一些方法,但出於某種原因,我沒有得到,當我嘗試打印來自另一個類的結果時,它會打印類似「(PackageName) (類名)@ 1497b7b1" 。 這隻發生在「Suma」,「Resta」,「División」,「Multiplicación」方法中。 這裏的代碼,這樣就可以更好地理解:Java方法打印其他東西

package fracciones; 

public class Fraction { 

    private int Numerador; 
    private int Denominador; 

    public Fraction() { 
     Numerador = 0; 
     Denominador = 1; 
    } 

    public Fraction(int Num, int Den) { 
     Numerador = Num; 
     Denominador = Den; 
    } 

    public int getNumerador() { 
     return Numerador; 
    } 

    public int getDenominador() { 
     return Denominador; 
    } 

    public Fraction Suma(Fraction Suma) { 
     int Num = Suma.getNumerador(); 
     int Den = Suma.getDenominador(); 

     Fraction c = new Fraction(); 

     c.Numerador = Numerador * Den + Denominador * Num; 
     c.Denominador = Denominador * Den; 
     return c; 
    } 

    public Fraction Resta(Fraction Resta) { 
     int Num = Resta.getNumerador(); 
     int Den = Resta.getDenominador(); 

     Fraction c = new Fraction(); 

     c.Numerador = Numerador * Den - Num * Denominador; 
     c.Denominador = Denominador * Den; 
     return c; 
    } 

    public Fraction Multiplicación(Fraction Multiplicación) { 
     int Num = Multiplicación.getNumerador(); 
     int Den = Multiplicación.getDenominador(); 

     Fraction c = new Fraction(); 

     c.Numerador = Numerador * Num; 
     c.Denominador = Denominador * Den; 
     return c; 
    } 

    public Fraction División(Fraction División) { 
     int Num = División.getNumerador(); 
     int Den = División.getDenominador(); 

     Fraction c = new Fraction(); 

     c.Numerador = Numerador * Den; 
     c.Denominador = Denominador * Num; 
     return c; 
    } 

    public String ImpresiónFraction() { 
     String Text = Numerador + "/" + Denominador; 
     return Text; 
    } 

    public Float ImpresiónFloat() { 
     Float Float = new Float(Numerador); 
     Float Numero = Float.floatValue()/Denominador; 
     return Numero; 
    } 

} 

這個類印刷:

package fracciones; 

public class FraccionCalc { 

    public static void main(String[] args) { 
     Fraction Una = new Fraction(1, 2); 
     Fraction Dos = new Fraction(8, 16); 

     System.out.println(Una.Resta(Dos)); 

     System.out.println(Una.ImpresiónFloat()); 

    } 

} 
+0

我認爲這是因爲你打印的是對象而不是對象的值。嘗試打印object.Numerator和分母。 – karmanaut 2013-04-04 09:19:04

+2

這就是你看到的對象哈希碼。 – 2013-04-04 09:19:36

回答

6

你需要重寫,並在您Fraction類中定義toString()自己,如果你想打印一個對象 - 否則你只會打印對象散列碼。

例如,下面可能是這樣的,你想要什麼:

@Override 
public String toString() { 
    return "Fraction [" + Numerador + "/" + Denominador + "]"; 
} 
2

Fraction,需要實現toString()方法,因爲它是目前使用Object.toString()返回:

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

實現示例:

class Fraction 
{ 
    @Override public String toString() 
    { 
     return Numerador + "/" + Denominador; 
    } 
} 
1

您需要覆蓋班級中的toString()方法。 System.out.println()使用它來獲取對象的文本表示。

0

你的方法返回一個Fraction類型,這需要實現toString()方法,它控制對象的字符串表示形式。

或者,您可以更改方法以獲得字符串類型的返回值。

1

您正在打印出對對象的引用。如果你想獲得實際的整數值,你必須提供getter方法,或者你正在變量市民和直接通過Una.Num打印出來等等...

1

嘗試做這個

System.out.println(Una.Resta(Dos).getNumerador() + Una.Resta(Dos).getDenominador()); 
在寫變量名和方法名使用 駱駝和使用 帕斯卡情況下而寫類:
2

Fraction類中添加這個方法

@Override 
    public String toString() { 
     return "Numerador: "+Numerador+", "+"Denominador: "+Denominador; 
    } 

PS 名稱。

1

Una.Resta()=>返回類Fraction的對象。 System.out.println =>需要打印一個字符串。所以它必須通過調用Object類的toString()方法將對象轉換爲字符串。所以你必須在Fraction類中實現這個方法來格式化你想要打印的字符串。