Java方法打印其他东西

时间:2013-04-04 09:16:06

标签: java methods printing println

我正在使用实例作为参数在Java上编写一些关于Fraction操作的方法,但由于某种原因我不知道,当我尝试从另一个类打印结果时,它打印的内容类似于“(PackageName)。(ClassName)@ 1497b7b1" 。 这只发生在“Suma”,“Resta”,“División”,“Multiplicación”方法中。 这是代码,以便您更好地理解:

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());

    }

}

8 个答案:

答案 0 :(得分:6)

如果要打印对象,则需要在toString()类中自行覆盖和定义Fraction - 否则您只需打印对象哈希码。

例如,以下内容可能类似于您想要的内容:

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

答案 1 :(得分:2)

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

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

示例实施:

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

答案 2 :(得分:2)

Fraction

中添加此方法
    @Override
    public String toString() {
        return "Numerador: "+Numerador+", "+"Denominador: "+Denominador;
    }

PS:在编写变量名称和方法名称时使用 camel case ,并在编写类名时使用 pascal case

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

尝试这样做

System.out.println(Una.Resta(Dos).getNumerador() + Una.Resta(Dos).getDenominador());

答案 6 :(得分:1)

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

答案 7 :(得分:0)

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

或者,您可以将方法更改为返回值类型为字符串。