Hallo
Ich soll einen neuen Datentyp für rationale Zahlen als Klasse entwickeln.
Zuerst soll ich die Klasse RationalNumber anlegen, dann ein privates Datenfeld vom Typ Integer anlegen und danach einen Konstruktor, der Zähler und Nenner der rationalen Zahlen als Parameter enthält:
public RationalNumber( int numerator, int denominator)
Die rationalen Zahlen sollen intern immer in gekürzter vorm dargestellt werden, deswegen soll ich eine Methode private void reduce() implementieren. Dafür habe ich eine Methode implementiert dieden ggT berechnet private static int greatestCommonDivisor(int a, int b).
Die Brüche sollen wann immer dies nötig gekürzt werden (auch im Konstruktor).
Ich soll auch eine Objektmethode public String getStringRepresentation() implementieren, die eine textuelle Repräsentation der rationalen Zahlen zurückgibt.
Bis dahin, glaube ich zumindest, habe ich das auch noch alles richtig gemacht
So jetzt soll ich eine Objektmethode public RationalNumber add(RationalNumber number) implementieren, die die rationale Zahl zur gegebenen rationalen Zahl number addiert und eine neue rationale Zahl entsteht.
Dann das gleiche nur mit der Subtraktion, also public RationalNumber sub(RationalNumber number).
Dann für die Multiplikation, also public RationalNumber mult(RationalNumber number).
Und dann auch noch für die Division, wo die rationale Zahl durch number geteilt wird, also public RationalNumber div(RationalNumber number).
Soweit ich das hinbekommen habe, habe ich das auch schon alles gemacht, also hier so :
Jetzt wird mir aber ab der Addition nichts mehr ausgegeben und ich bekommen diese Fehlermeldungen:
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:55: error: cannot find symbol
int nenner = this.denominator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:56: error: cannot find symbol
int thisZaehler = this.numerator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:57: error: cannot find symbol
int cZaehler = c.numerator * this.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:66: error: cannot find symbol
System.out.println( add( number ) );
^
symbol: variable number
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:72: error: cannot find symbol
int nenner = this.denominator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:73: error: cannot find symbol
int thisZaehler = this.numerator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:74: error: cannot find symbol
int cZaehler = c.numerator * this.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:85: error: cannot find symbol
int nenner = this.denominator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:86: error: cannot find symbol
int zaehler = this.numerator * c.numerator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:94: error: cannot find symbol
int nenner = this.numerator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:95: error: cannot find symbol
int zaehler = this.denominator * c.numerator;
^
symbol: variable c
location: class RationalNumber
11 errors
Also, dass er die Variable c nicht kennt, aber davor bei den Aufgaben erkennt er c doch noch?
Entschuldigung für die Länge und Textlastigkeit, ich habe schon versucht es so gut wie möglich zu kürzen!
Ich soll einen neuen Datentyp für rationale Zahlen als Klasse entwickeln.
Zuerst soll ich die Klasse RationalNumber anlegen, dann ein privates Datenfeld vom Typ Integer anlegen und danach einen Konstruktor, der Zähler und Nenner der rationalen Zahlen als Parameter enthält:
public RationalNumber( int numerator, int denominator)
Die rationalen Zahlen sollen intern immer in gekürzter vorm dargestellt werden, deswegen soll ich eine Methode private void reduce() implementieren. Dafür habe ich eine Methode implementiert dieden ggT berechnet private static int greatestCommonDivisor(int a, int b).
Die Brüche sollen wann immer dies nötig gekürzt werden (auch im Konstruktor).
Ich soll auch eine Objektmethode public String getStringRepresentation() implementieren, die eine textuelle Repräsentation der rationalen Zahlen zurückgibt.
Bis dahin, glaube ich zumindest, habe ich das auch noch alles richtig gemacht
So jetzt soll ich eine Objektmethode public RationalNumber add(RationalNumber number) implementieren, die die rationale Zahl zur gegebenen rationalen Zahl number addiert und eine neue rationale Zahl entsteht.
Dann das gleiche nur mit der Subtraktion, also public RationalNumber sub(RationalNumber number).
Dann für die Multiplikation, also public RationalNumber mult(RationalNumber number).
Und dann auch noch für die Division, wo die rationale Zahl durch number geteilt wird, also public RationalNumber div(RationalNumber number).
Soweit ich das hinbekommen habe, habe ich das auch schon alles gemacht, also hier so :
Java:
class RationalNumber{
private int numerator;
private int denominator;
public RationalNumber(int numerator, int denominator){
this.numerator = numerator;
this.denominator = denominator;
if (greatestCommonDivisor(numerator, denominator) != 1){
reduce();
}
}
public void ausgeben(){
System.out.println( numerator + "/" + denominator);
}
private static int greatestCommonDivisor(int a, int b) {
while (a != b) {
if (a > b)
a = a - b;
else
b = b - a;
}
return a;
}
private void reduce(){
int a = greatestCommonDivisor(numerator, denominator);
numerator = numerator / a;
denominator = denominator / a;
}
public String getStringRepresentation(){
String string = ("" + numerator + "/" + denominator);
return string;
}
public void ausgeben3(){
System.out.println(getStringRepresentation());
}
public RationalNumber add(RationalNumber number){
int nenner = this.denominator * c.denominator;
int thisZaehler = this.numerator * c.denominator;
int cZaehler = c.numerator * this.denominator;
int zaehlerSum = thisZaehler + cZaehler;
RationalNumber addZahl = new RationalNumber ( zaehlerSum, nenner );
return addZahl;
}
public void ausgeben2() {
System.out.println( add( number ) );
}
public RationalNumber sub(RationalNumber number){ //ist wie add(...) nur statt + ein -
int nenner = this.denominator * c.denominator;
int thisZaehler = this.numerator * c.denominator;
int cZaehler = c.numerator * this.denominator;
int zaehlerSum = thisZaehler - cZaehler;
RationalNumber subZahl = new RationalNumber ( zaehlerSum, nenner );
return subZahl;
}
public RationalNumber mult(RationalNumber number) {
int nenner = this.denominator * c.denominator;
int zaehler = this.numerator * c.numerator;
RationalNumber multZahl = new RationalNumber( zaehler, nenner);
return multZahl;
}
public RationalNumber div(RationalNumber number) {
int nenner = this.numerator * c.denominator;
int zaehler = this.denominator * c.numerator;
RationalNumber divZahl = new RationalNumber( zaehler, nenner );
return divZahl;
}
public static void main(String[] args){
RationalNumber c = new RationalNumber(3, 12);
c.ausgeben();
c.reduce();
c.ausgeben();
c.getStringRepresentation();
c.ausgeben3();
RationalNumber r = new RationalNumber( 12, 6 );
r.reduce();
r.ausgeben2();
}
}
Jetzt wird mir aber ab der Addition nichts mehr ausgegeben und ich bekommen diese Fehlermeldungen:
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:55: error: cannot find symbol
int nenner = this.denominator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:56: error: cannot find symbol
int thisZaehler = this.numerator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:57: error: cannot find symbol
int cZaehler = c.numerator * this.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:66: error: cannot find symbol
System.out.println( add( number ) );
^
symbol: variable number
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:72: error: cannot find symbol
int nenner = this.denominator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:73: error: cannot find symbol
int thisZaehler = this.numerator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:74: error: cannot find symbol
int cZaehler = c.numerator * this.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:85: error: cannot find symbol
int nenner = this.denominator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:86: error: cannot find symbol
int zaehler = this.numerator * c.numerator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:94: error: cannot find symbol
int nenner = this.numerator * c.denominator;
^
symbol: variable c
location: class RationalNumber
C:\Users\C_I_N_J_A\Desktop\Uni\PraktInfo▄bungsblõtter\Ubungsblatt6\RationalNumber.java:95: error: cannot find symbol
int zaehler = this.denominator * c.numerator;
^
symbol: variable c
location: class RationalNumber
11 errors
Also, dass er die Variable c nicht kennt, aber davor bei den Aufgaben erkennt er c doch noch?
Entschuldigung für die Länge und Textlastigkeit, ich habe schon versucht es so gut wie möglich zu kürzen!