java - 如何让我的程序返回 -1/4 而不是 1/-4?

标签 java class

\救命!我的作业要在今晚中午 12 点之前交,但我似乎无法让我的程序输出负数 -1/4 而不是 1/-4!这让我很沮丧,因为事实是,我不能在我的数字前面放一个“-”(正如你在下面的程序中看到的那样,我已经注释掉了)。 我尝试将分数变为 -1/4 (仅使用该分数作为示例)位于“public RationalNumber(int...) { 行:你看到我写 *-1 的部分了吗?我在哪里导致我得到 1/-4 的那一步出了问题?这让我很沮丧...提前致谢。

private int n;
private int d;      
public RationalNumber(int numerator, int denominator) {
    if (denominator == 0) {
        throw new IllegalArgumentException();
    }               
    if (denominator < 0) {
        denominator = denominator * -1;
        numerator = numerator * -1;          
      }
    n = numerator;
    d = denominator;        
    simplified();
}   

public RationalNumber add(RationalNumber rn) {
    int comDenom = d * rn.getDenominator(); 
    int num1 = n * rn.d;
    int num2 = rn.n * d;
    d = comDenom;
    return new RationalNumber(num1 + num2, d);      
}

public RationalNumber subtract(RationalNumber rn) {
    int num1 = n * rn.d;
    int num2 = rn.n * d;
    return new RationalNumber(num1 - num2, d);
}

public RationalNumber multiply(RationalNumber rn) {
    int numer = n * rn.n;
    int denom = d * rn.d;
    return new RationalNumber(numer, denom);
}

public RationalNumber divide(RationalNumber rn) {
    int numer = n * rn.d;
    int denom = d * rn.n;
    return new RationalNumber(numer, denom);
}   

public RationalNumber() {
    n = 0;
    d = 1;
}

public boolean equals(RationalNumber o) {
    return (n == o.getNumerator() && d == o.getDenominator());
}   

public int getDenominator() {
    return d;
}

public int getNumerator() {
    return n;
}   

public String toString() { //Prints everything here.
    if (d == 1) {
        return "" + n;
    }       
    if (n == 0) {
        return "0";
    }
    /*if ((n < 0) || (d < 0)) {
        return "-" + Math.abs(n) + "/" + Math.abs(d);
    }*/
    return n + "/" + d;
}   

private void simplified() {
     if (n != 0) {
         int cDenom = gcd(n, d);
         n = n / cDenom;
         d = d / cDenom;
     }
}   

private int gcd(int gcdNum1, int gcdNum2) {
    while (gcdNum1 != 0 && gcdNum2 != 0) {
        int tempNum = gcdNum2;
        gcdNum2 = gcdNum1 % gcdNum2;
        gcdNum1 = tempNum;
    }
    return gcdNum1 + gcdNum2;
}

最佳答案

因为这是家庭作业,所以自己发现并解决问题符合您的最大利益。

以下是一些帮助您入门的提示:

  • 找出构造函数调用 simplified() 之前和之后 nd 的值。

  • 您可以使用 Java IDE 的调试器或使用跟踪打印来完成此操作;即调用 System.out.println(...)

关于java - 如何让我的程序返回 -1/4 而不是 1/-4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171389/

相关文章:

java - 为什么 toString() 不能是静态方法?

Java 文件复制和打开新的 jFrame

java - 在 Java 中创建 XML 日志文件

java.util.Date 在 spring + hibernate 中显示 future 日期的奇怪问题

html - 如何打破CSS中父元素类的继承?

c# - {get; 和有什么不一样?设置;},{获取;私有(private)集;} 和{get;}?

Java 将字符串与正则表达式进行比较 - while 循环

java - 使用 java.util.zip 构建有效的 epub

c++ - 链接列表打印不正确?

删除包含动态数组作为数据成员的对象时的 C++ 析构函数用法