Java方法打印其他东西

问题描述:

我正在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

你需要重写,并在您Fraction类中定义toString()自己,如果你想打印一个对象 - 否则你只会打印对象散列码。

例如,下面可能是这样的,你想要什么:

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

Fraction,需要实现toString()方法,因为它是目前使用Object.toString()返回:

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

实现示例:

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

您需要覆盖班级中的toString()方法。 System.out.println()使用它来获取对象的文本表示。

你的方法返回一个Fraction类型,这需要实现toString()方法,它控制对象的字符串表示形式。

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

您正在打印出对对象的引用。如果你想获得实际的整数值,你必须提供getter方法,或者你正在变量市民和直接通过Una.Num打印出来等等...

尝试做这个

System.out.println(Una.Resta(Dos).getNumerador() + Una.Resta(Dos).getDenominador()); 
在写变量名和方法名使用 骆驼和使用 帕斯卡情况下而写类:

Fraction类中添加这个方法

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

PS 名称。

Una.Resta()=>返回类Fraction的对象。 System.out.println =>需要打印一个字符串。所以它必须通过调用Object类的toString()方法将对象转换为字符串。所以你必须在Fraction类中实现这个方法来格式化你想要打印的字符串。