\救命!我的作业要在今晚中午 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()
之前和之后n
和d
的值。您可以使用 Java IDE 的调试器或使用跟踪打印来完成此操作;即调用
System.out.println(...)
关于java - 如何让我的程序返回 -1/4 而不是 1/-4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171389/