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 {

我得到了Java 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()); 

谢谢你的回答。你是个活生生的储蓄者