Inserire nei costruttori e nei vari metodi il controllo delle situazioni di errore ovvero quando il risultato è impossibile (denominatore 0). In tal caso non deve essere eseguito il calcolo sulla frazione e deve essere visualizzato un messaggio di avviso con i valori delle frazioni coinvolte nell’operazione.
Frazione.java
public class Frazione {
public int num, den;
public Frazione(int numVal, int denVal) {
num = numVal;
den = denVal;
}
public Frazione() {
num = 0;
den = 1;
}
public Frazione(int numero) {
num = numero;
den = 1;
}
public void add(Frazione f) {
int denComune = den * f.den;
num = num * f.den + f.num * den;
den = denComune;
int d = Int.mcd(num, den);
num /= d;
den /= d;
}
public void sot(Frazione f) {
int denComune = den * f.den;
num = num * f.den - f.num * den;
den = denComune;
int d = Int.mcd(num, den);
num /= d;
den /= d;
}
public void mol(Frazione f) {
num *= f.num;
den *= f.den;
int d = Int.mcd(num, den);
num /= d;
den /= d;
}
public void div(Frazione f) {
num *= f.den;
den *= f.num;
int d = Int.mcd(num, den);
num /= d;
den /= d;
}
@Override
public String toString() {
return num + "/" + den;
}
}
Int.java
public class Int {
// Algoritmo di Euclide per la ricerca del MCD
public static int mcd(int a, int b) {
int t;
while (b != 0) {
t = b;
b = a % b;
a = t;
}
return a;
}
}