SchwarzWeiß
Bekanntes Mitglied
Ich meinte diese Zeile:
Code:int ggt = ggT(Math.abs(zähler), Math.abs(nenner));
Code:int ggt = ggT(Math.abs(zähler), Math.abs(nenner));
Danke. Was meinst du mit Testfälle?Und jetzt bist du fertig
Edit: in main noch Testfälle für umrechnen, kehrwert und kuerzen einbauen
public class Fraction {
private int zähler =0;
private int nenner = 0;
public String toString() {
String buffer = zähler + "/" + nenner;
return buffer;
}
public Fraction(int zähler, int nenner){
this.zähler = zähler;
this.nenner = nenner;
}
public Fraction addiere(Fraction b) {
// Hauptnenner bilden
int common = hauptNenner(this.nenner, b.nenner);
// zwei neue Brüche anlegen die dann passend erweitert werden
Fraction commonA = new Fraction(0,0);
Fraction commonB = new Fraction(0,0);
commonA = erweitern(common);
commonB = b.erweitern(common);
// neuen Bruch anlegen fuer das Ergebnis
Fraction sum = new Fraction(0,0);
// berechne die Summe
sum.zähler = commonA.zähler + commonB.zähler;
sum.nenner = common;
// hier könnte man jetzt noch kuerzen
return sum;
}
private int hauptNenner(int nenner1, int nenner2) {
int factor = nenner1;
while ((nenner1 % nenner2) != 0) {
nenner1 += factor;
}
return nenner1;
}
private Fraction erweitern(int common) {
Fraction result = new Fraction(1,2);
int factor = common / this.nenner;
result.zähler = this.zähler * factor;
result.nenner = common;
return result;
}
public Fraction multiplizieren(Fraction b) {
Fraction produkt = new Fraction(0,0);
produkt.zähler = this.zähler *b.zähler;
produkt.nenner = this.nenner * b.nenner;
return produkt;
}
public double umrechnenFließkommaZahl() {
double umrechnung = (double)this.zähler / (double) this.nenner;
return umrechnung;
}
public Fraction kehrwert() {
Fraction k = new Fraction(0,0);
k.zähler = this.nenner;
k.nenner = this.zähler;
return k;
}
private int ggT(int a, int b) {
int r;
do{
r=a%b;
a=b;
b=r;
}while (r!=0);
return a;
}
public Fraction kürzen() {
Fraction c= new Fraction(0,0);
int ggt = ggT(Math.abs(zähler), Math.abs(nenner));
c.zähler = this.zähler / ggt;
c.nenner = this.nenner / ggt;
return c;
}
}
import java.util.Scanner;
public class A {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner eingabe= new Scanner (System.in);
System.out.println("Geben Sie bitte den Zähler des ersten Bruchs ein.");
int x=eingabe.nextInt();
System.out.println("Geben Sie bitte den Nenner des ersten Bruchs ein.");
int y=eingabe.nextInt();
System.out.println("Geben Sie bitte den Zähler des zweiten Bruchs ein.");
int v=eingabe.nextInt();
System.out.println("Geben Sie bitte den Nenner des zweiten Bruchs ein.");
int z=eingabe.nextInt();
Fraction bruch1 = new Fraction(x,y);
Fraction bruch2 = new Fraction(v,z);
Fraction summe = bruch1.addiere(bruch2);
System.out.println("Die Summe ergibt "+summe);
Fraction bruch3 = new Fraction(x,y);
Fraction bruch4 = new Fraction(v,z);
Fraction pro = bruch3.multiplizieren(bruch4);
System.out.println("Das Produkt ist "+pro);
Fraction bruch5 = new Fraction(x,y);
double umrechnen = bruch5.umrechnenFließkommaZahl();
System.out.println("Die Fließkommazahl ist "+umrechnen);
Fraction bruch6 = new Fraction(x,y);
Fraction kehrwert = bruch6.kehrwert();
System.out.println("Der Kehrwert ist "+kehrwert);
Fraction bruch7 = new Fraction(x,y);
Fraction kürzen= bruch7.kürzen();
System.out.println("Der äquivalente Bruch lautet " +kürzen);
}
}
Geben Sie bitte den Zähler des ersten Bruchs ein.
3
Geben Sie bitte den Nenner des ersten Bruchs ein.
9
Geben Sie bitte den Zähler des zweiten Bruchs ein.
1
Geben Sie bitte den Nenner des zweiten Bruchs ein.
2
Die Summe ergibt 15/18
Das Produkt ist 3/18
Die Fließkommazahl ist 0.3333333333333333
Der Kehrwert ist 9/3
Der äquivalente Bruch lautet 1/3