在主要方法对象java

时间:2019-05-31 17:25:09

标签: java object methods printing main

这正在向我打印内存中的位置,为什么会发生这种情况以及如何修复它。

这是作业或考试的问题:

  1. 该方法将这个RationalNumber的分子乘以r的分子,并且将此RationalNumber的分母乘以r的分母。可以使用以下哪项替换/ *丢失的代码* /,以便乘法()方法可以按预期工作?

这些是解决方案,我需要选择:

num = num * r.num;
den = den * r.den;





this.num = this.num * r.num;
this.den = this.den * r.den;







num = num * r.getNum();
den = den * r.getDen();

我尝试了一切,但没有任何效果。

这是我的代码:

public class RationalNumber {
    private int num;
    private int den; // den != 0

    /** Constructs a RationalNumber object.
     *  @param n the numerator
     *  @param d the denominator
     *  Precondition: d != 0
     */
    public RationalNumber(int n, int d) {
        num = n;
        den = d;
    }

    /** Multiplies this RationalNumber by r.
     *  @param r a RationalNumber object
     *  Precondition: this.den() != 0
     */
    public void multiply(RationalNumber r) {
        /* missing code */
        num = num * r.num;
        den = den * r.den;

         //this.num = this.num * r.num;
        //this.den = this.den * r.den;

        //num = num * r.getNum();
       //den = den * r.getDen();
    }

    /** @return the numerator
     */
    public int getNum() {
        /* implementation not shown */
        return num;
    }

    /** @return the denominator
     */
    public int getDen() {
        /* implementation not shown */
        return den;
    }
    public static void main(String[] args){
        RationalNumber num = new RationalNumber(10, -1);
        System.out.println(num);


    }

    // Other methods not shown.
}

1 个答案:

答案 0 :(得分:0)

您需要重写RationalNumber类的toString()方法。

System.out.println(num);

如果我们未指定该类的任何特定属性或方法,则上面的代码将打印所提供类的toString()方法的返回值。

由于您的RationalNumber类未覆盖toString(),因此它将查找其超类toString()(对象类)。

您可以通过添加

来解决此问题
@Override
public String toString(){
    return num + "/" + den;
}