Java Fraction类返回字符串而不是已求解的分数
我得到了Java Fraction类的代码,用于确定输出并将文档作为赋值文件归档。但是当我使用这个类来解一个实际分数时,它不会给出实际的结果,只会给出随机字符串 输出:Java Fraction类返回字符串而不是已求解的分数,java,Java,我得到了Java Fraction类的代码,用于确定输出并将文档作为赋值文件归档。但是当我使用这个类来解一个实际分数时,它不会给出实际的结果,只会给出随机字符串 输出: C:\Users\Jack\Documents\assign>java testFrac Fraction@3485097d + Fraction@a32087b - Fraction@5acac877 = Fraction@372f2b32 Fraction.java public class Fraction {
C:\Users\Jack\Documents\assign>java testFrac
Fraction@3485097d + Fraction@a32087b - Fraction@5acac877 = Fraction@372f2b32
Fraction.java
public class Fraction {
private int num; // numerator
private int denom; // denominator
public Fraction(int n, int d) {
int g;
if (d == 0) {
System.out.println("Fraction: fraction "
+ "with 0 denominator?"); System.exit(1);
}
if (n == 0) {
num = 0;
denom = 1;
} else {
if (d < 0) {
n = -n;
d = -d;
}
if ((g = gcd(n, d)) != 1) { // remove gcd
n /= g;
d /= g;
}
num = n;
denom = d;
}
}
private static int gcd(int a, int b) {
a = Math.abs(a);
b = Math.abs(b);
if (a == 0) return b; // 0 is error value
if (b == 0) return a;
int t;
while (b > 0) {
t = a % b; // take "-" to the extreme
a = b;
b = t;
}
return a;
}
public boolean isZero() {
return (denom == 1 && num == 0);
}
public boolean isInt() {
return (denom == 1);
}
public boolean equals(Fraction y) {
return (num == y.num && denom == y.denom);
}
public boolean greaterThan(Fraction y) {
return (num * y.denom > denom * y.num);
}
public Fraction minus(Fraction y) {
return new Fraction(
num * y.denom - y.num * denom,
denom * y.denom
);
}
public Fraction plus(Fraction y) {
return new Fraction(
num * y.denom + y.num * denom,
denom * y.denom
);
}
public Fraction times(Fraction y) {
return new Fraction(num * y.num, denom * y.denom);
}
public Fraction dividedBy(Fraction y) {
return new Fraction(num * y.denom, denom * y.num);
}
}
请告诉我哪里出错了 请使用以下内容重写
toString
方法
@Override
public String toString(){
return num + "/" + denom;
}
您需要为
分数
类定义toString
方法;默认情况下,生成您看到的“随机”输出(这根本不是随机的)。如果您不覆盖toString()
,默认情况下,当您打印对象时,您只会看到对象的hashcode值(如Fraction@3485097d
等)
因此,您需要重写toString()
方法(来自java.lang.Object
),如下所示,以便在使用Fraction类的对象时,它将打印字符串(如下所示)
打印分数对象时,会调用
toString()
方法
public String toString(){
return num+"/"+denom;
}
您正在打印分数对象本身。要打印它,您需要分数的字符串表示形式。您可以重写
toString
方法并执行以下操作
@Override
public String toString() {
return num + "/" + denom;
}
System.out.println( x.toString() + " + " +
u.toString() + " - " +
v.toString() + " = " + y.toString());
打印时调用toString
方法,如下所示
@Override
public String toString() {
return num + "/" + denom;
}
System.out.println( x.toString() + " + " +
u.toString() + " - " +
v.toString() + " = " + y.toString());
谢谢你的回答。你是个活生生的储蓄者