这正在向我打印内存中的位置,为什么会发生这种情况以及如何修复它。
这是作业或考试的问题:
这些是解决方案,我需要选择:
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.
}
答案 0 :(得分:0)
您需要重写RationalNumber类的toString()方法。
System.out.println(num);
如果我们未指定该类的任何特定属性或方法,则上面的代码将打印所提供类的toString()方法的返回值。
由于您的RationalNumber类未覆盖toString(),因此它将查找其超类toString()(对象类)。
您可以通过添加
来解决此问题@Override
public String toString(){
return num + "/" + den;
}