Klassen etwas Bruchrechnern

ocsme

Top Contributor
Hallo zusammen,

wir sollen als Übung eine Klasse Rational erstellen.

Wenn ich 2 Brüche miteinander Addiere kommt zwar das Ergebnis raus aber er kürzt es nicht.
Hier mal kurz meine Methoden:
Java:
Rational reduce(){
        if (getNum() == 0)
            denom = 1;
        else {
            int gcd = gcd(getNum(), getDenom());
            num = num / gcd;
            denom = denom / gcd;
        }
        return this;
    }

und das Addieren hier:

Java:
Rational add(Rational r){
        reduce();
        r.reduce();
        return new Rational ((getNum()*r.getDenom()) + (r.getNum()*getDenom()), getDenom()*r.getDenom());
    }

kann ich sowas überhaupt mit dem return machen? Denn er erstellt ja ein neues Objekt und das soll ja gekürzt werden wenn ich nun wie oben hin gehe reduce(); voran stelle hat das nicht die gewünschte Auswirkung es sei den die Brüche würden paarweise zusammen passen und man könnte beides Kürzen oder?

Die Getter sind so:
Java:
int getNum(){
        return num;
    }
  
    int getDenom(){
        return denom;
    }

hehe den ggt (gcd) vergessen :D
Java:
int gcd(int a, int b){
        int r = a%b;
         while (r != 0){
             a = b;
             b = r;
             r = a%b;
         }
         return b;
 

Kababär

Top Contributor
Wenn du willst, dass das neue Objekt gekürzt wird, kannst du so was machen:
Code:
        return new Rational ((getNum()*r.getDenom()) + (r.getNum()*getDenom())).reduce();

So rufst du die Kürzungs-Methode auf das neue Objekt an.
 

ocsme

Top Contributor
ja sowas meinte ich wow dank dir :)
woher weiß man sowas ich komme damit noch nicht so ganz klar :-( vielleicht muss ich mehr Bücher welzen über das Thema denn in viele steht immer mal was anderes drin :O

ich teste es morgen mal danke nochmals :)
LG
 

Kababär

Top Contributor
Naja also Voraussetzung ist, dass die Methode reduce public ist und sich in der Klasse Rational befindet.
Es ist im Prinzip nichts anderes als:
Code:
Ration rat = new Rational(...);
rat.recude();
return rat;
 

ocsme

Top Contributor
So hier mal die komplette Klasse doch es ist immer noch ein echt doofer Fehler drin denn ich nicht weg bekomme :-(

wir haben ein Rechner bekommen also eine Oberfläche die wir in Eclipse einfügen sollen und er berechnet den Kehrwert eines Bruches doch er ändert das vorzeichen nicht :-(

Java:
public class Rational {
   
    private int num;
    private int denom;

    Rational(int n, int d){
        if (d == 0)
            throw new ArithmeticException();
        if (d < 0){
            n = -n;
            d = -d;
        }
       
        num = n;
        denom = d;   
    }
   
    Rational (int n){
        this(n, 1);
    }

    Rational(){
        this(0);
    }
   
    Rational(Rational r){
        this(r.num,r.denom);
    }
   
    Rational reduce(){
        if (getNum() == 0)
            denom = 1;
        else {
            int gcd = gcd(getNum(), getDenom());
            num = num / gcd;
            denom = denom / gcd;
        }
        return this;
    }
   
    Rational invert(){
        return new Rational(getDenom(), getNum());
    }
   
    Rational add(Rational r){
        return new Rational ((getNum()*r.getDenom()) + (r.getNum()*getDenom()), getDenom()*r.getDenom()).reduce();
    }
   
    Rational sub(Rational r){
        return new Rational ((getNum()*r.getDenom()) - (r.getNum()*getDenom()), getDenom()*r.getDenom()).reduce();
    }
   
    Rational mult(Rational r){
        return new Rational (getNum()*r.getNum(), getDenom()*r.getDenom()).reduce();
    }
   
    Rational div(Rational r){
        return new Rational(getNum()*r.getDenom(), getDenom()*r.getNum()).reduce().invert();
    }
   
    int getNum(){
        return num;
    }
   
    int getDenom(){
        return denom;
    }
   
     void output()
        {
            System.out.println(getNum() + "/" + getDenom());
        }
    
     String text() {
         if
         (getDenom() == 1)
         return     "" + getNum();
         return     getNum() + "/" + getDenom();
         }
    
     int gcd(int a, int b){
        int r = a%b;
         while (r != 0){
             a = b;
             b = r;
             r = a%b;
         }
         return b;
        
     }
}

das sollen wir dann eingeben
1-6=1/x = -1/5
doch leider kommt bei mir immer raus 1/-5 :-( aber wenn ich in einem Main Programm alles durchgehe macht er es richtig da ich oben ja in if(d<0) ... drin habe!
weiß jemand wie ich das anders hin bekomme?

lg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
S Möglichkeit, mit g.draw etwas vor ein JTextfield zu „zeichnen“? Java Basics - Anfänger-Themen 7
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
Y Wie kann man überprüfen, ob bei einem Print Befehl tatsächlich etwas geprintet wurde? Java Basics - Anfänger-Themen 4
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
B Wie kann ich etwas vor der Main-Methode ausführen? Java Basics - Anfänger-Themen 21
A Haben KNNs ein Gedächtnis, lernen etwas oder verändern sich, während sie nicht trainieren, aber aktiv sind? Java Basics - Anfänger-Themen 3
CptK Methoden While-Schleife so lange ausführen, wie Methode etwas zurückgibt Java Basics - Anfänger-Themen 2
D Etwas unsicher wie es weitergehen soll Java Basics - Anfänger-Themen 2
I In der Mitte eines Frames mit BorderLayout etwas malen Java Basics - Anfänger-Themen 7
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
A Ich habe das Gefühl etwas grundlegendes falsch zu machen Java Basics - Anfänger-Themen 6
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
O Etwas auf der Konsole ausgeben, usw. Java Basics - Anfänger-Themen 22
J Input/Output Scanner Input als etwas einsetzen Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Gibt meiner Meinung etwas falsches aus. Java Basics - Anfänger-Themen 7
JavaNewbie2.0 Habe ein frage wie man etwas macht. Java Basics - Anfänger-Themen 13
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
M Variablen Eine etwas andere if Abfrage ! Java Basics - Anfänger-Themen 10
D Etwas speichern Java Basics - Anfänger-Themen 5
L Gibt es etwas wie "HashMap <String, String, String> Java Basics - Anfänger-Themen 9
J Etwas dauerhaft überprüfen, wie ? Java Basics - Anfänger-Themen 8
A scan.nextLine() - Wenn man zu lange nichts macht, soll etwas passieren Java Basics - Anfänger-Themen 3
B Wie kann man auf das JFrame einer anderen Klasse zugreifen, etwas hinzufügen und entfernen?? Java Basics - Anfänger-Themen 3
S Komponente sagen, sie soll etwas tun Java Basics - Anfänger-Themen 3
J Für 3 Sekunden etwas bestimmtes zeichnen Java Basics - Anfänger-Themen 8
H Etwas wie sort() / sorted() in JAVA-Collections? Java Basics - Anfänger-Themen 5
S 0 wird negativ, wenn sie mit etwas negativen multipliziert wird. Warum? Java Basics - Anfänger-Themen 4
G gegen (etwas) programmieren Java Basics - Anfänger-Themen 11
Binary.Coder Vor und nach jeder Codezeile etwas einfügen Java Basics - Anfänger-Themen 3
A Wie kann man etwas von Typ Image wieder löschen? Java Basics - Anfänger-Themen 7
G vor String etwas anhängen Java Basics - Anfänger-Themen 2
D Attributen und Methoden, etwas vergessen? Java Basics - Anfänger-Themen 6
T TCP, Empfang nur wenn wirklich etwas kommt Java Basics - Anfänger-Themen 6
F Etwas bestimmtes löschen Java Basics - Anfänger-Themen 13
N prüfe ob etwas in einer Matrix steht... Java Basics - Anfänger-Themen 14
S etwas schierige Ausgabe mit Systemout Java Basics - Anfänger-Themen 5
G Methode, die etwas hochzählt Java Basics - Anfänger-Themen 6
U etwas aufaddieren... acc. Java Basics - Anfänger-Themen 12
T Etwas an paint()-Methode übergeben? Java Basics - Anfänger-Themen 6
T RandomAccessFile - Wie schreibe ich etwas in eine txt Datei? Java Basics - Anfänger-Themen 5
G etwas is falsch? Java Basics - Anfänger-Themen 10
S Compile zu etwas Ausführbarem Java Basics - Anfänger-Themen 4
X Wie save ich etwas? Java Basics - Anfänger-Themen 6
R etwas andere for schleife Java Basics - Anfänger-Themen 2
G die etwas andere suche! Java Basics - Anfänger-Themen 22
M Über einen Button etwas zeichnen lassen Java Basics - Anfänger-Themen 5
L URL aufrufen und per get etwas übergeben Java Basics - Anfänger-Themen 6
K Einer Methode etwas zuweisen Java Basics - Anfänger-Themen 22
N aus einer file etwas auslesen. Java Basics - Anfänger-Themen 2
T Aus Klasse "B" in Klasse "A" etwas tun? Java Basics - Anfänger-Themen 8
G Programme etwas machen lassen. Java Basics - Anfänger-Themen 4
B Etwas in der konsole ausgeben ? Java Basics - Anfänger-Themen 7
G Programm soll nach bestimmter Zeit etwas tun Java Basics - Anfänger-Themen 24
B KeyListener (etwas bewegen) Java Basics - Anfänger-Themen 10
P Textdateischreiben, etwas fehlt noch bzw. 1 error kommt Java Basics - Anfänger-Themen 4
H in Textdateien etwas schreiben bzw. speichern Java Basics - Anfänger-Themen 2
D In String etwas einfügen. Java Basics - Anfänger-Themen 2
B Irgend etwas ist merkwürdig! brauche hilfe Java Basics - Anfänger-Themen 16
D Mein kleines Programm etwas schöner machen :-) Java Basics - Anfänger-Themen 13
G Gibt es so etwas wie eine Textfeldgruppe? Java Basics - Anfänger-Themen 2
R Dem Textfeld einer Internetseite etwas übergeben Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben