所以我有一個簡單的學校申請。減法,除法,相乘和相加的分數。不能被零分數分數
它的工作相當不錯,但現在有1分數,我得到一個錯誤。 分數:16分之28 - 24分之42
Exception in thread "main" java.lang.ArithmeticException:/by zero
at sample.Breuk.reduce(Breuk.java:70)
at sample.Breuk.subtract(Breuk.java:44)
at sample.Main.main(Main.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
讓我去哪裏出了問題行了,它原來是在減去分數。
現在我計算的分數(十六分之二十八 - 24分之42),結果= 0
所以我知道我的錯誤是什麼,是哪裏錯了,但我不知道如何解決這個。有人對我有一些提示?
public Breuk subtract(Breuk other){
int d = teller * other.teller;
int n1 = noemer * other.teller;
int n2 = other.noemer * teller;
Breuk b = new Breuk(n1-n2,d);
b.reduce();
return b;
}
private void reduce() {
int i = Math.min(Math.abs(noemer), Math.abs(teller));
if (i == 0) {
System.out.println("Error");
}
while ((noemer % i != 0) || (teller % i != 0)) //BUG IS HERE//
i--;
noemer = noemer/i;
teller = teller/i;
}
}
MAIN:
Breuk a = new Breuk(28,16);
Breuk b = new Breuk(42,24);
Breuk g = a.subtract(b); // Breuk A - Breuk b
System.out.println(a + " - " + b + " = "+ g);
當你'%i'或'/ i',檢查是否'i'不爲0。如果是這樣,處理它(你決定如何)。 – Maroun
你有一個'Breuk(0,384)',也就是'i'開始爲'0'。你可能會打印「錯誤」(在這種情況下,這不是一個錯誤),但是仍然繼續。如果'noemer'爲'0',則應該減少到'0/1'。 –
@tobias_k是的,這是真的,所以我只需要改變,如果減少它,並在一個其他的? – Lozeputten