Darstellung von Brüchen

Informatikanfänger12

Aktives Mitglied
Hallo,
ich soll ein Programm schreiben, welches nichtnegative rationalen Zahlen als Brüche darstellt und diese addiert, multipliziert bzw. auch kürzt.
Dabei geht es mir um die Frage, wie ich es mache, wenn negative Zahlen eingeben werden:
Mein Programm bisher:


Java:
public class Bruch {
   
   
    int zaehler;
    int  nenner;
   
   
    public Bruch(){
        zaehler=0;          //parameterloser Konstruktor
        nenner=1;
    }
   
    public Bruch(int zaehler, int nenner){
       
        if(zaehler<0 || nenner<0) {
            System.out.println("Positive Werte eingeben");
            return;
        }
        if(nenner==0) {
            this.nenner=1;
        }
         this.zaehler=zaehler;
         this.nenner=nenner;
         kuerze();
         }
   
     public int getZaehler(){
        return zaehler;
    }                                       //getter-Methoden
     public int getNenner(){
            return nenner;
        }

    public void kuerze() {

        int limit = Math.min(zaehler,nenner);
        for(int i=2; i<=limit; i++) {
            if(zaehler%i==0 && nenner%i==0 ) {
                zaehler /=i;
                nenner/=i;
            }
        }
       
     
    }
   
    public String toString()
      {
         return "" + zaehler + " / " + nenner;
      }

Dabei gehts mir um die Zeile im 2. Konstruktor, mit Nenner und Zaehler <0.
Kann man das irgendwie besser machen ? :)
 

Blender3D

Top Contributor
Code:
    ..
        if (zaehler < 0 || nenner < 0)
            throw new IllegalArgumentException("Negative argumentes are not allowed!");
        ..
 

Informatikanfänger12

Aktives Mitglied
Danke :)
Ich habe noch eine Frage zu meiner Methode kuerze() . Wenn ich z.b 2 Brüche addiere, soll ich kuerze dann in der Methode addiere gleich anwenden?
In der Aufgabe steht, dass kuerze nich unnötig oft verwendet werden soll.
Wie würdet ihr es machen:

Hier meine Addition-Methode:

Java:
public Bruch addiere( Bruch a){
        
        int z1 = zaehler  * a.getNenner();
        int z2 = nenner * a.getZaehler();
        int n= nenner*a.getNenner();
        return new Bruch(z1+z2, n);
      }
 

Informatikanfänger12

Aktives Mitglied
Vllt kann mir jmd bitte sagen, wie ich folgende Methode noch programmieren kann:
Soll einen Bruch im Format „123/456“ in ein Objekt des Typs Bruch überführen und zurück geben. Ich habe doch schon die toString-Methode oder was sehe ich falsch?
 

Robat

Top Contributor
Zu deiner 1. Frage: Ich würde nach dem addieren den Bruch noch mal kürzen lassen. Kommt aber auch auf die genaue Aufgabenstellung an.
Zu deiner 2. Frage: Das hat nichts mit toString() zu tun. Deine neue Methode soll einen String entgegen nehmen in der Form 123/456 und daraus dann ein Bruch-Objekt erstellen.
Diese soll zurückgegeben werden. Du müsstest also die Zahl vor dem Bruchstrich extrahieren und zum Zähler machen und die andere Zahl zum Nenner.
 

Informatikanfänger12

Aktives Mitglied
Danke:)

Also zu 1.)

Java:
public Bruch addiere( Bruch a){
        
        int z1 = zaehler  * a.getNenner();
        int z2 = nenner * a.getZaehler();
        int n= nenner*a.getNenner();
       
        Bruch b=new Bruch(z1+z2,n);
        b.kuerze();
        return b;
      }

Ok so:)


Bei 2. weis ich nicht wie das genau gehen soll:

Wie kann ich da etwas extrahieren. Kannst du nochmal bitte weiterhelfen?
 

Robat

Top Contributor
Habs nur überflogen aber sieht gut aus.
2. Du musst nicht wissen wann das "/" kommt. Du kannst einen String an einem Zeichen splitten (in deinem Fall dem Bruchstrich). Dann bekommst du ein String-Array zurück was in einem Fall beide Zahlen enthalten würde. die kannst du dann umwandeln in Zahlen :)
 

Robat

Top Contributor
Hier mal ein Beispiel
Java:
String input = "12;4;3";
String[] inputArr = input.split(";");
for(int i = 0; i < inputArr.length; i++) {
    System.out.println(Integer.toString(inputArr[i]);
}
Das musst du jetzt nur noch auf dein Beispiel anpassen :)
 

Informatikanfänger12

Aktives Mitglied
Was macht genau das
Integer.toString(inputArr



Habe es bis jetzt so:

Java:
public static  Bruch liesBruch(String input) {
       
        String[] inputArr = input.split("/");
       
        for(int i = 0; i < inputArr.length; i++) {
            System.out.println(Integer.toString(inputArr[i]);
        }
       
    }
 

Robat

Top Contributor
Sorry .. da war ich beim schreiben wohl woanders. :D
Das soll natürlich die Integer.parseInt(String s) Methode sein.
Diese nimmt einen String und wandelt ihn in ein int um.
 

Informatikanfänger12

Aktives Mitglied
Schau mal, vllt so:

Java:
public static  Bruch liesBruch(String input) {
       
        String[] inputArr = input.split("/");
       
       
            int neuerZaehler=(Integer.parseInt(inputArr[0]));
            int neuerNenner=(Integer.parseInt(inputArr[1]));
           return new Bruch(neuerZaehler, neuerNenner);
           
        }

Da brauch ich keine for Schleife egtl?
 

Informatikanfänger12

Aktives Mitglied
Danke:)
Vllt nochmal zur Methode kuerze:
Man soll eine Klasse programmieren, welche eine nicht negative rationale Zahl mittels Bruchschreibweise korrekt darstellt.
Also soll ich kuerze in addiere und multipliziere reinnehmen oder nicht?
Man soll kuerze laut Aufgabe nicht unnötig oft verwenden?
 

Blender3D

Top Contributor
Zu deiner 1. Frage: Ich würde nach dem addieren den Bruch noch mal kürzen lassen. Kommt aber auch auf die genaue Aufgabenstellung an.
public Bruch addiere( Bruch a){

int z1 = zaehler * a.getNenner();
int z2 = nenner * a.getZaehler();
int n= nenner*a.getNenner();
return new Bruch(z1+z2, n);
}
Macht die Methode addiere bereits da sie den Konstruktor Bruch( int, int ) mittels new aufruft. Dieser beinhaltet bereits das Kürzen.

public Bruch(int zaehler, int nenner){

if(zaehler<0 || nenner<0) {
System.out.println("Positive Werte eingeben");
return;
}
if(nenner==0) {
this.nenner=1;
}
this.zaehler=zaehler;
this.nenner=nenner;
kuerze();
}
 

Bobi

Bekanntes Mitglied
Hallo! wie Prüfe ich diese Methode mit Junit in eclipse ?
Java:
public Bruch addiere( Bruch a){
       
        int z1 = zaehler  * a.getNenner();
        int z2 = nenner * a.getZaehler();
        int n= nenner*a.getNenner();
      
        Bruch b=new Bruch(z1+z2,n);
        b.kuerze();
        return b;
      }
Wie übergebe diese Bruch hier also
Java:
    @Test
    public void testAddiere() {
        // Erzeuge einen Bruch zum Testen.
        Bruch einBruch = new Bruch();

        // Teste den Zaehler des Bruchs.
        assertThat("getNenner arbeitet nicht korrekt.",
               einBruch.addiere(new Bruch(1/2)), // so was funktioniert nicht
                is(equalTo(1)));
  
    }
 
Zuletzt bearbeitet von einem Moderator:

mrBrown

Super-Moderator
Mitarbeiter
Du musst schon einen existierenden Konstruktor aufrufen.
Einen, der *einen int* (der in deinem Test auch 0 wäre) entgegen nimmt, wird es nicht geben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z Probleme bei Darstellung von Brüchen Java Basics - Anfänger-Themen 15
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
pkelod Binäre Darstellung Bitwise-Operator Java Basics - Anfänger-Themen 10
W OOP Objektorientiert: Darstellung von Uhrzeiten im 24-Stunden-Format Java Basics - Anfänger-Themen 15
J Frage zur Darstellung Java Basics - Anfänger-Themen 2
T Erste Schritte Darstellung der Java-Projekte in Eclipse Java Basics - Anfänger-Themen 2
H Eclipse , Design-Modus, unvollständige Darstellung Java Basics - Anfänger-Themen 0
I Fehlermeldung bei Darstellung von Arrays Java Basics - Anfänger-Themen 2
G Graphische Darstellung (Arbeiten mit einem Window) Java Basics - Anfänger-Themen 1
V Rechenzeichen bei Termen - Darstellung bei Schleifen Java Basics - Anfänger-Themen 7
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1
B Quadratwurzel nach Heron in rekursiver Darstellung Java Basics - Anfänger-Themen 1
M Darstellung von Dezimalzahlen Java Basics - Anfänger-Themen 2
S Darstellung eines Balkendiagrammes Java Basics - Anfänger-Themen 14
G Adjazenzlisten-Darstellung Java Basics - Anfänger-Themen 2
J Falsche Darstellung von Float Java Basics - Anfänger-Themen 2
J Automatentheorie-Darstellung der regulären Sprache eines DEA Java Basics - Anfänger-Themen 5
A Char Bytes Umwandlung und Darstellung Java Basics - Anfänger-Themen 3
Fab1 Interface UML Darstellung von impl. Methoden Java Basics - Anfänger-Themen 7
K Problem mit JTable Daten-darstellung Java Basics - Anfänger-Themen 6
-horn- Einfache graphische Darstellung von 3D Koordinaten für Flugbahnen? Java Basics - Anfänger-Themen 4
D Bit-Darstellung Gleitkommazahl Java Basics - Anfänger-Themen 2
E JLabel deaktivieren ohne Veränderung der Darstellung Java Basics - Anfänger-Themen 2
F Tabellenähnliche Darstellung Java Basics - Anfänger-Themen 17
F Datentypen 4- bit darstellung Java Basics - Anfänger-Themen 5
DStrohma Alternative Darstellung von Paketen in Eclipse Java Basics - Anfänger-Themen 2
H Darstellung ComboBox in jTable Java Basics - Anfänger-Themen 5
B Effektive Implementierung für Darstellung großer Datenmengen in Jogl Java Basics - Anfänger-Themen 5
E Darstellung der Choice Einträge Java Basics - Anfänger-Themen 4
W Darstellung negativer Zahlen und Mengen von Zahlen Java Basics - Anfänger-Themen 9
A Program zur Darstellung von Zahlen in Java Java Basics - Anfänger-Themen 4
S Darstellung der Ausgabe Java Basics - Anfänger-Themen 8
A GregorianCalendar -Darstellung mit drawString Java Basics - Anfänger-Themen 3
D Darstellung in Swing Java Basics - Anfänger-Themen 6
A JFileChooser Darstellung Java Basics - Anfänger-Themen 3
K Silo Volumenberechnung mit Visueller darstellung Java Basics - Anfänger-Themen 20
S Darstellung von Umlauten Java Basics - Anfänger-Themen 24
P Problem mit Darstellung im Baum Java Basics - Anfänger-Themen 4
T Special Character darstellung Java Basics - Anfänger-Themen 4
G Problem mit der Darstellung (JFreechart) Java Basics - Anfänger-Themen 3
D JFileChooser Darstellung ändern? Java Basics - Anfänger-Themen 4
B Darstellung eines gesperrten JTextField Java Basics - Anfänger-Themen 2
M Illegal Escape Character und keine Darstellung? Java Basics - Anfänger-Themen 7
S Swing-Darstellung in Windows-Optik? Java Basics - Anfänger-Themen 13
M Programm zur Darstellung von Abschreibungen Java Basics - Anfänger-Themen 5
B Grafische Darstellung einer Emailverteilerliste Java Basics - Anfänger-Themen 2
G Problem bei der Darstellung von bestimmten ASCII-Zeichen Java Basics - Anfänger-Themen 4
C Rechnen mit Brüchen, ist meine Lösung soweit richtig? Java Basics - Anfänger-Themen 4
P Rechnen mit Brüchen - objektorientierte Programmierung Java Basics - Anfänger-Themen 18
D Erste Schritte Rechnen mit Brüchen Java Basics - Anfänger-Themen 13
J kürzen von brüchen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben