![](/img/trans.png)
[英]Order of operations with multiplication, subtraction, and division in Java?
[英]Addition, Subtraction, Multiplication, & Division with Fractions in Java (Homework)
我已將此代碼編寫為我在AP Computer Science中收到的作業的答案,而我的老師正在重做此操作,因為答案無效。 我只能在我的機器上編譯它,所以我要依靠老師確定現在產生的結果如下。 這項任務是在今晚午夜之前完成的,我等到現在的拖延症患者在這里尋求幫助,但還是非常感謝。 另外,這是我第一次來,很抱歉,某些代碼的格式不正確。 謝謝您的幫助!
結果ATM
if a = 3/4 and b = 5/6
a.add(b) produces 35/24; This should be 19/12
a.subtract(b) produces 1/0; This should be -1/12
a.divide(b) produces 11/1; This should be 9/10
a.multiply(b) produces 6/-5; This should be 5/8
這是代碼。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
class Fraction{
private int numer;
private int denom;
private Fraction answer;
//Definition
public Fraction(int num, int den)
{
numer = num;
denom = den;
simplify();
}
//Simplify
void simplify()
{
int gcd = findGCD(numer, denom);
numer /= gcd;
denom /= gcd;
}
//GCD Function
int findGCD(int a, int b)
{ int temp;
while(b != 0)
{
temp = b;
b = a % b;
a = temp;
}
return a;
}
//GetNumerator
public int getNumer()
{
return numer;
}
//GetDenominator
public int getDenom()
{
return denom;
}
//Fraction Add Method
Fraction add(Fraction x)
{
Fraction answer;
if(denom == x.denom)
{
answer = new Fraction(x.numer + numer, denom);
}
else
{
int den = denom * x.getDenom();
int num = numer * x.getNumer();
num += x.getNumer() * denom;
answer = new Fraction(num, den);
}
return answer;
}
//Fraction Subtract Method
Fraction subtract(Fraction x)
{
Fraction answer;
if(x.denom == denom)
{
answer = new Fraction(numer - x.numer, denom);
}
else
{
int den = denom / x.getDenom();
int num = numer / x.getNumer();
num -= x.getNumer() * denom;
answer = new Fraction(num, den);
}
return answer;
}
//Fraction Multiply Method
Fraction multiply(Fraction x)
{
Fraction answer;
if(x.denom == denom)
{
answer = new Fraction(numer + x.numer, denom);
}
else
{
int den = denom + x.getDenom();
int num = numer + x.getNumer();
num -= x.getNumer() * denom;
answer = new Fraction(num, den);
}
return answer;
}
//Fraction Divide Method
Fraction divide(Fraction x)
{
Fraction answer;
if(x.denom == denom)
{
answer = new Fraction(numer - x.numer, denom);
}
else
{
int den = denom - x.getDenom();
int num = numer - x.getNumer();
num -= x.getNumer() * denom;
answer = new Fraction(num, den);
}
return answer;
}
//@Override
public boolean equals(Fraction x)
{
boolean answer = false;
if(numer == x.numer && denom == x.denom)
{
answer = true;
}
return answer;
}
//ToString
public String toString()
{
return (Integer.toString(numer) + "/" +
Integer.toString(denom));
}
//Main Method
public void main(String[]args)
{
Fraction a = new Fraction(3,4);
Fraction b = new Fraction(5,6);
System.out.println(a.toString());
System.out.println(b.toString());
Fraction c = a.add(b);
System.out.println(c.toString());
c = a.subtract(b);
System.out.println(c.toString());
c = a.divide(b);
System.out.println(c.toString());
c = a.multiply(b);
System.out.println(c.toString());
}
}
因此,開始就只有一件事:一直使用getDenom(),因為在您的代碼中,有時是getDenom,有時是denom。
對於add()方法:當標稱值不同時,您錯了。 你必須做 :
denom = this.getDenom() * x.getDenom();
num = this.getNum() * x.getDenom() + x.getNumer() * this.getDenom();
//and check if simplification is possible.
return new Fraction(num,denom);
對於其他操作來說,情況也是一樣。 檢查您是否乘以良好的分母或分子,因為事實並非如此,並且不要忘記簡化。
希望能幫助到你
好的,我不會打擾您的GUI,這是您應該做的:
// Euclidean Algorithm
public int gcd(int a, int b)
{
if (b==0) return a;
return GCD(b,a%b);
}
void simplify()
{
int gcd = gcd(numer, denom);
numer /= gcd;
denom /= gcd;
}
Fraction add(Fraction x)
{
return new Fraction(numer * x.getDenom() + x.getNumer() * numer,
denom * x.getDenom();
}
我想這是您的gcd函數。 正如指出的那樣,加法有不正確的符號
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.