Sooo, ich bins mal wieder, nachdem mir hier bei meinen Problemen mit der letzten Aufgabe super geholfen habe stehe ich schonwieder vor dem nächsten Problem (generell kann man aber sagen es macht immer mehr Spaß, vorausgesetzt die Programme die man schreibt laufen auch
)
Ich soll eine Klasse RatNumber implementieren mit den Variablen num (Zähler) und denom (Nenner).
Der Konstruktor soll:
a. Prüfen ob der Nenner Null ist, falls ja eine Fehlermeldung ausgeben
b. Den Bruch so weit wie möglich kürzen
c. setzen der beiden Attribute num und denom
Dazu soll ich vier Methoden schreiben die addieren, subtrahieren, multiplizieren und dividieren. Außerdem sollen Getters eingebaut werden (das hab ich). CompareTo soll zwei RatNumber vergleichen und toString soll die RatNumber als String ausgeben.
das hier macht die ganze Sache aber irgendwie komisch:
Hinweis: Es soll in den Methoden zum Addieren und Subtrahieren jeweils ein neues Objekt RatNumber zurückgegeben werden, This darf dabei also nicht verändert werden.
mein erstes Problem: in meinem Code wird auch ein nicht kürzbarer Bruch gekürzt und der Rest "vergessen" wie kann ich das umgehen? Hatte gedacht eine IF Schleife mit der Bedingung % 0, allerdings bekomm ich das nicht zum laufen
in der Main Methode habe ich erst einmal meine ggT Funktion geprüft und ausgeben lassen (um das ganze nachzuvollziehen), diese Zeilen bitte einfach nicht beachten
.
Nun steh ich wie der Ochse vorm Berg, wie soll ich ohne
und
die add sub mult und div Konstruktoren schreiben? :/
Das ist bis jetzt mein (lauffähiger) Code, ein paar Teile habe ich erst einmal "ausgeklammert" als KOmmentar.
Die Konsole liefert mir:
Ich soll eine Klasse RatNumber implementieren mit den Variablen num (Zähler) und denom (Nenner).
Der Konstruktor soll:
a. Prüfen ob der Nenner Null ist, falls ja eine Fehlermeldung ausgeben
b. Den Bruch so weit wie möglich kürzen
c. setzen der beiden Attribute num und denom
Dazu soll ich vier Methoden schreiben die addieren, subtrahieren, multiplizieren und dividieren. Außerdem sollen Getters eingebaut werden (das hab ich). CompareTo soll zwei RatNumber vergleichen und toString soll die RatNumber als String ausgeben.
das hier macht die ganze Sache aber irgendwie komisch:
Hinweis: Es soll in den Methoden zum Addieren und Subtrahieren jeweils ein neues Objekt RatNumber zurückgegeben werden, This darf dabei also nicht verändert werden.
mein erstes Problem: in meinem Code wird auch ein nicht kürzbarer Bruch gekürzt und der Rest "vergessen" wie kann ich das umgehen? Hatte gedacht eine IF Schleife mit der Bedingung % 0, allerdings bekomm ich das nicht zum laufen
in der Main Methode habe ich erst einmal meine ggT Funktion geprüft und ausgeben lassen (um das ganze nachzuvollziehen), diese Zeilen bitte einfach nicht beachten
Nun steh ich wie der Ochse vorm Berg, wie soll ich ohne
Java:
this.num
Java:
this.denom
Das ist bis jetzt mein (lauffähiger) Code, ein paar Teile habe ich erst einmal "ausgeklammert" als KOmmentar.
Java:
public class RatNumber implements Comparable<RatNumber>{
private int num; //Zaehler
private int denom; //Nenner
public RatNumber(int n, int d) {
n = this.num;
d = this.denom;
//Fehlernachricht wenn Nenner = 0
if(d==0){
System.out.println("Nenner darf nicht Null sein");
//sonst ggT ermitteln
}else{
ggT(this.num, this.denom);
}
}
//ggT ermitteln zum kürzen
static int ggT(int a, int b){
if(a==b||b==0) return a;
if(b==1) return a;
else return ggT(b,a%b);
}
public int getNum() {
return num;
}
public int getDenom() {
return denom;
}
/*
public int compareTo(RatNumber n){
// TODO: source code
}
*/
public RatNumber add(RatNumber r) {
return r;
}
/*
public RatNumber sub(RatNumber r) {
// TODO: source code
// returns a ***new*** RatNumber
}
public RatNumber mult(RatNumber r) {
// TODO: source code
// returns a ***new*** RatNumber
}
public RatNumber div(RatNumber r) {
// TODO: source code
// returns a ***new*** RatNumber
}
*/
public String toString() {
return "(" + num + "/" + denom + ")";
}
public static void main(String[] args) {
int a = 12; //Zaehler
int b = 4; //Nenner
System.out.println("ggT von " +a+ "/" +b+ " ist " +ggT(a,b));
System.out.println(+a+ "/" +b+ " gekürzt: " +a/ggT(a,b)+ "/" +b/ggT(a,b));
RatNumber r1 = new RatNumber(12,4);
RatNumber r2 = new RatNumber(4,12);
}
}
Die Konsole liefert mir:
Java:
ggT von 12/4 ist 4
12/4 gekürzt: 3/1
Nenner darf nicht Null sein
Nenner darf nicht Null sein