Hallo wieder JAVA-Fans!
Es ist bisschen spät schon, aber ich bin sehr begeistert und probiere ein Programm zu erzeugen.
Meine Aufgabe ist:
1. Schreibt eine Klasse Bruch, die Brüche, also Paare von ganzzahligen Zählern und Nennern, darstellt.
2. Schreibt zunächst einen Konstruktor, der Zähler und Nenner übergeben bekommt.
3. Schreibt eine Objektmethode printBruch(), die den Bruch ausgibt. Im Nenner soll kein Vorzeichen
stehen (d. h. es soll z. B. statt 1/ − 2 −1/2 ausgegeben werden).
4. Erstellt eine Objektmethode addiereBruch(...), die einen übergebenen Bruch hinzu addiert.
5. Schreibt eine Objektmethode umkehrBruch(), die den Bruch umkehrt.
6. Implementiert eine andere (Test-)Klasse mit einer main-Methode, die Bruch-Objekte erstellt und
ausgibt, die anderen Methoden testet und die Ergebnisse ausgibt. Wählt Beispiele, die die Korrektheit
eurer Implementierung demonstrieren.
Hinweis: Beachtet Fälle mit 0 im Nenner – dies ist natürlich ungültig und muss angemessen behandelt
werden!
Meine Klasse mit den Methoden sieht so aus:
Mein Test-Programm:
Ich denke, dass fast alles richtig ist, aber ich bekomme einen Fehler, wenn ich das Programm kompilieren möchte und nämlich:
TestBruch.java:16: error: non-static method addiereBruch(int,int) cannot be referenced from a static context
Bruch.addiereBruch(z, n);
^
1 error
Meiner Meinung nach muss meine Funktion addiereBruch nicht void sein, aber wenn sie nicht void ist, kann ich nicht zwei werte zurückgeben (return Zaehler, Nenner; geht nicht).
Ich wäre sehr dankbar, wenn jemand mir einen Rat geben könnte.
Es ist bisschen spät schon, aber ich bin sehr begeistert und probiere ein Programm zu erzeugen.
Meine Aufgabe ist:
1. Schreibt eine Klasse Bruch, die Brüche, also Paare von ganzzahligen Zählern und Nennern, darstellt.
2. Schreibt zunächst einen Konstruktor, der Zähler und Nenner übergeben bekommt.
3. Schreibt eine Objektmethode printBruch(), die den Bruch ausgibt. Im Nenner soll kein Vorzeichen
stehen (d. h. es soll z. B. statt 1/ − 2 −1/2 ausgegeben werden).
4. Erstellt eine Objektmethode addiereBruch(...), die einen übergebenen Bruch hinzu addiert.
5. Schreibt eine Objektmethode umkehrBruch(), die den Bruch umkehrt.
6. Implementiert eine andere (Test-)Klasse mit einer main-Methode, die Bruch-Objekte erstellt und
ausgibt, die anderen Methoden testet und die Ergebnisse ausgibt. Wählt Beispiele, die die Korrektheit
eurer Implementierung demonstrieren.
Hinweis: Beachtet Fälle mit 0 im Nenner – dies ist natürlich ungültig und muss angemessen behandelt
werden!
Meine Klasse mit den Methoden sieht so aus:
Java:
public class Bruch{
int Zaehler;
int Nenner;
public void printBruch(){
if(Nenner != 0){
if(Nenner < 0){
Zaehler = -Zaehler;
Nenner = -Nenner;
}
System.out.println(Zaehler+"/"+Nenner);
}else{ System.out.println("FEHLER - durch 0 kann man nicht teilen !!!");
}
}
public void addiereBruch(int z, int n){
if(Nenner != 0){
if(Nenner == n){
Zaehler += z;
}else{
int multi = Nenner*n;
Zaehler = multi/Nenner;
z = multi/n;
Zaehler = Zaehler + z;
Nenner = multi;
}
}else{ System.out.println("FEHLER - durch 0 kann man nicht teilen !!!");
}
}
public void umkehrBruch(){
if(Nenner != 0 && Zaehler != 0){
int speicher = Zaehler;
Zaehler = Nenner;
Nenner = speicher;
}else{ System.out.println("FEHLER - durch 0 kann man nicht teilen !!!");
}
}
public Bruch(int Zaehler, int Nenner){
this.Zaehler = Zaehler;
this.Nenner = Nenner;
}
}
Mein Test-Programm:
Java:
public class TestBruch{
public static void main(String args[]){
int zaehler = Terminal.askInt( "Der Zaehler von 1.Bruch ist: " );
int nenner = Terminal.askInt( "Der Nenner von 1.Bruch ist: " );
Bruch Bruch1 = new Bruch( zaehler, nenner );
char mehr = 'a';
while ( true ){
mehr = Terminal.askChar( "Möglichkeiten: \n Bruch auf dem Bildschirm zeigen: [b] \n Ein Bruch dazu addieren: [a] \n Den Bruch umkehren: [u] \n Das Programm beenden: [e] " );
if ( mehr == 'b' ){
Bruch1.printBruch();
}
if ( mehr == 'a' ){
int z = Terminal.askInt( "Der Zaehler von 2.Bruch ist: " );
int n = Terminal.askInt( "Der Nenner von 2.Bruch ist: " );
Bruch Addition = new Bruch( zaehler, nenner );
Bruch.addiereBruch(z, n);
Addition.printBruch();
}
if ( mehr == 'u' ){
Bruch umBruch = Bruch1;
umBruch.printBruch();
}
if ( mehr == 'e' ){
break;
}
}
}
}
Ich denke, dass fast alles richtig ist, aber ich bekomme einen Fehler, wenn ich das Programm kompilieren möchte und nämlich:
TestBruch.java:16: error: non-static method addiereBruch(int,int) cannot be referenced from a static context
Bruch.addiereBruch(z, n);
^
1 error
Meiner Meinung nach muss meine Funktion addiereBruch nicht void sein, aber wenn sie nicht void ist, kann ich nicht zwei werte zurückgeben (return Zaehler, Nenner; geht nicht).
Ich wäre sehr dankbar, wenn jemand mir einen Rat geben könnte.
Zuletzt bearbeitet: