Brüche und gemischte Schreibweise

dehlen

Bekanntes Mitglied
ja also ich hab jetzt 2 textfelder wo die brüche ausgegeben werden... ich wollte einfach noch ein 3 textfeld machen indem dann wenn gemischte schreibweise geht dann halt der bruch reingeschrieben wird.... brauche eigentlich nur die methode die meinen bruch in eine gemischte schreibweise umformt... die würde ich dann in den action listener schreiben sodass ich wenn ich auf kürzen drücke der dass dann in gemischter schreibweise ausgibt....

Also wie gesagt brauche halt nur ne Methode die meinen Bruch in gemischter schreibweise ausgibt
 

dehlen

Bekanntes Mitglied
OK also müsste ich dann sowas machen ?!
Code:
private int gemischt() 
        { 
                int z = zähler;  
                int n = nenner;  
                int ganzezahl;
                int bruchzahl;  
 
                while(n!=0)           
                { 
                        z/n = ganzezahl;
                        z%n = zahl;    
            } 
 
           return ganzezahl && bruchzahl/nenner; 
        }
aber das kann ja nicht funktionieren ...frage mich nur wieso :autsch:
 
Zuletzt bearbeitet:

dehlen

Bekanntes Mitglied
wahrscheinlich ja... =)
aber davor stimmt doch auch schon was nicht oder ?! =) auf dem papier ist es einfach aber ... :D
 

Landei

Top Contributor
Du solltest deine Nase mal etwas tiefer in ein Java-Buch stecken...
Java:
int ganzezahl  = z/n;
int bruchzahl  = z%n;
System.out.println("Gemischte Schreibweise: " + ganzezahl + " " + bruchzahl + "/" + n);
 

VfL_Freak

Top Contributor
Moin,

Code:
private int gemischt() 
        { 
                int z = zähler;  
                int n = nenner;  
                int ganzezahl;
                int bruchzahl;  
 
                while(n!=0)           
                { 
                        z/n = ganzezahl;
                        z%n = zahl;    
            } 
 
           return ganzezahl && bruchzahl/nenner; 
        }
aber das kann ja nicht funktionieren ...frage mich nur wieso :autsch:

hier ein paar Anmerkungen zu Deinem Versuch:
Java:
private int gemischt() 
        { 
                int z = zähler;  // was ist hier 'zähler' ?? (besser: zaehler!!)
                int n = nenner;  // was ist hier 'nenner' ??
                int ganzezahl = 0;  // tunlichst immer initialiseren
                int bruchzahl = 0;  // tunlichst immer initialiseren  
 
                while(n!=0)           
                { 
                        z/n = ganzezahl; // ja wohl eher andersrum: "ganzezahl = z / n;"
                        z%n = zahl;      // dito
        	} 
 	
	  	// das kann so nicht werden ...
		// (a) machst Du hier eine bool'schen Vergleich (&&) !!
		// (b) zum anderen kannst Du keinen Bruch so als integer darstellen
		//     dies würde höchstens als String gehen (siehe vorheriger Post) !!
        	return ganzezahl && bruchzahl/nenner;
		
        }

Gruß
Klaus
 

dehlen

Bekanntes Mitglied
ok vielen dank für die antworten habe es jetzt
ja habe selber gerade gesehen wie lächerlich mein versuch war....
sry dafür :D
also wie gesagt danke .. stand irgendwie auf dem schlauch und habe dann irgend ein unfug produziert :D

Edit:
für all die die es interessiert :

Hier nun meine Methode:

Java:
public Bruch gemischt() { 
            
            int z = zähler;
            int n = nenner;            
            
           int ganzezahl  = z/n;
           int bruchzahl  = z%n;      
           
            {return new Bruch(ganzezahl, bruchzahl);}        
            
        }


und den entsprechenden Action Listener zur Aufrufen der Method bei Klick auf einen Button
Java:
class MischAction implements ActionListener {

        // Diese Methode wird aufgerufen, wenn man auf den Misch-Button klickt //
        @Override
        public void actionPerformed(ActionEvent e) {
         Bruch einBruch = new Bruch (Integer.parseInt(ergebnis1.getText()), Integer.parseInt(ergebnis2.getText())); 
         Bruch gemischterBruch = einBruch.gemischt(); 
         text1.setText(String.valueOf(gemischterBruch.zähler)); 
         text2.setText(String.valueOf(gemischterBruch.nenner));
         text3.setText(String.valueOf(einBruch.nenner)); 
            
}     
}
 
Zuletzt bearbeitet:

Landei

Top Contributor
Das ist falsch: [c]return new Bruch(ganzezahl, bruchzahl)[/c]. Ein gemischter Bruch besteht aus drei Zahlen: Dem ganzzahligen Anteil, dem Zähler vom Rest und dem Nenner vom Rest (siehe Bruchrechnung ? Wikipedia ). Es ist eine besondere Art der Darstellung eines Bruches. Brauchst du das bloß für die Ausgabe, würde ich einfach den String dafür zusammenbasteln. Brauchst du die einzelnen Werte, müsstest du dir zusätzliche Getter in deiner Bruchklasse hinzufügen, etwas wie

Java:
public int getGanzzahligenTeil() { return zähler/nenner; }
public int getGemischtenZähler() { return zähler%nenner; }
//eigentlich überflüssig
public int getGemischtenNenner() { return nenner; }

Einen anderen Bruch zur Rückgabe der Werte zu mißbrauchen ist hochgradig verwirrend und gefährlich.
 

dehlen

Bekanntes Mitglied
ja ich weiß das es mathematisch gesehen nicht richtig ist... aber da ich in meinem action listener geschrieben hab das text3 den Text von nenner bekommt sieht es so aus als wäre es richtig... sprich es funktioniert... nur halt nicht mathematisch das ist mir klar
 

VfL_Freak

Top Contributor
Moin,

Hier nun meine Methode:
Java:
public Bruch gemischt() { 
            int z = zähler;
            int n = nenner;
            
           int ganzezahl  = z/n;
           int bruchzahl  = z%n;

            {return new Bruch(ganzezahl, bruchzahl);}
        }


hmm - das funktioniert wirklich ? :bahnhof:

Mich irritiert folgendes (siehe Kommentar im Code!) :
Java:
public Bruch gemischt() 
{ 
    int z = zähler;  // 'zähler' ist nicht deklariert und initialisiert (zudem bitte KEINE Umlaute!!)
    int n = nenner; // 'nenner' ebenso wenig
            
    int ganzezahl  = z/n;
    int bruchzahl  = z%n;
      
    // Hinweis: die geschweiften Klammern waren hier sicher überflüssig!
    // Man kann sicher drüber streiten, ob es richtig ist, hier den Methodenaufruf hinzupacken!
    // Ich würde es aus gründen der Les- und Wartbarkeit nicht machen, sondern so :
    // Bruch myBruch = new Bruch( ganzezahl, bruchzahl ); 
    // return myBruch;
    return new Bruch( ganzezahl, bruchzahl ); 
}

Gruß
Klaus
 

dehlen

Bekanntes Mitglied
OK ja habe es jetzt eingesehen das Landei's Lösung schöner ist und habe es geändert
aöso hier meine Methoden :
Code:
public int getGanzzahligenTeil() { 
                return zähler/nenner; 
            }
            public int getGemischtenZähler() { 
                return zähler%nenner; 
            }

            public int getGemischtenNenner() { 
                return nenner; 
            }

und hier mein ActionListener für die Aktion:
Java:
 class MischAction implements ActionListener {

        // Diese Methode wird aufgerufen, wenn man auf den Misch-Button klickt //
        @Override
        public void actionPerformed(ActionEvent e) {
         Bruch einBruch = new Bruch (Integer.parseInt(ergebnis1.getText()), Integer.parseInt(ergebnis2.getText()));
      
         text1.setText(String.valueOf(einBruch.getGanzzahligenTeil()));
         text2.setText(String.valueOf(einBruch.getGemischtenZähler()));
         text3.setText(String.valueOf(einBruch.getGemischtenNenner()));
            
}     
}

danke @Landei hab nun dahinter geblickt ;-) habe sogar noch hinzugefügt das die gemischte Schreibweise automatisch gekürzt wird und das ganze funktioniert ;-)
 
Zuletzt bearbeitet:

Oben