首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

红色部分代码解决方案

2012-04-24 
红色部分代码public class Rational { int numerator, denominatorRational(int x, int y) {numerator

红色部分代码
public class Rational {
int numerator, denominator;
 
Rational(int x, int y) {
numerator = x;
denominator = y;
}
 
Rational add(Rational r) {
int x = denominator * r.denominator;
int y = numerator * r.denominator + r.numerator * denominator;
int gcd = gcd(x, y);
return new Rational(y/gcd, x/gcd);
}
 
Rational subtract(Rational r) {
int x = denominator * r.denominator;
int y = numerator * r.denominator - r.numerator * denominator;
int gcd = gcd(x, y);
return new Rational(y/gcd, x/gcd);
}
 
Rational multiply(Rational r) {
int x = denominator * r.denominator;
int y = numerator * r.numerator;
int gcd = gcd(x, y);
return new Rational(y/gcd, x/gcd);
}
 
Rational divide(Rational r) {
int x = denominator * r.numerator;
int y = numerator * r.denominator;
int gcd = gcd(x, y);
return new Rational(y/gcd, x/gcd);
}
 
public String toString() {
return numerator + "/" + denominator;
}
 
public static int gcd(int x, int y) {
int tmp;
while (x % y != 0) {
tmp = y;
y = x % y;
x = tmp;
}
return y;
}
 
public static void main(String[] args) {
Rational r1 = new Rational(3, 4);
Rational r2 = new Rational(3, 8);
System.out.println("r1 = " + r1);
System.out.println("r2 = " + r2);
System.out.println("r1 + r2 = " + r1.add(r2));
System.out.println("r1 - r2 = " + r1.subtract(r2));
System.out.println("r1 * r2 = " + r1.multiply(r2));
System.out.println("r1 / r2 = " + r1.divide(r2));
}
}
这里的String toString方法有什么用的?系统会自己调用这个方法,然后输出这个格式吗?

[解决办法]

Java code
Rational r2 = new Rational(3, 8);System.out.println(r2);//这时候打印的是toString方法的返回值,没实现toString的话打印地址
[解决办法]
System.out.println(r2) ;
其实 输出的 是 r2.toString();
 如果没有重写 toString()则输出的是 : 类名@十六进制数 ;可以看看API的Object的toString()

热点排行