Java Bruchrechner programmieren

V_Fynn03

Mitglied
Die Aufgabe lautet einen Bruchrechner mit den typischen Rechenarten wie kürzen, gleichn. machen,+ , - , / und * zu programmieren . Das sollen wir Graphisch machen und dafür habe ich schon 6 Textfelder, 4 für die 2 Brüche welche miteinander verechnet werden sollen und 2 für das Ergebnis also Zähler und Nenner. Außerdem habe ich für die Rechenarten wie kürzen,+,- usw. JButtons erstellt, welche wenn ich drauf klicke die dazu gehörige Rechenmethode ausführen soll. Heißt wenn ich + klicke soll es die bereits programmierte Methode ausführen und in den beiden TextFields für die Ausgabe anzeigen. Nun habe ich hier 2 Fehlermeldungen (siehe Bilder) welche für alle Probleme verantwortlich sind, welche ich noch habe und ich weiß nicht genau wie ich es beheben soll. Bitte keine komplizierte Programmiersprache anwenden, denn ich glaube diese Fehler sind nicht allzu schwer zu beheben.
Vielen Dank
 

Anhänge

  • 2019-12-09 (6).png
    2019-12-09 (6).png
    128 KB · Aufrufe: 13
  • 2019-12-09 (7).png
    2019-12-09 (7).png
    111,7 KB · Aufrufe: 12
1. Fehler: Du rufst eine Methode "div" auf, die keine Parameter entgegennimmt. Du übergibst aber mehrere Parameter.

2. Fehler: setText erwartet als Argument einen String. Du verrechnest aber zwei Ganzzahlen, das ergibt wieder eine Zahl. Du musst die Zahl als String formatieren. Beispielsweise mit String.valueOf(deineZahl).
 
Aber man kann in einer Methode ja nicht mehr als 3 Integer irgendwie ausrufen oder? Wenn ich das da in die Klammer zum Beispiel bei div reinschreibe (int zaehler , int nenner , int zaehler2, int nenner2) dann geht das irgendwie nicht?
Und zum Zweiten ich will die Zahl ja gar nicht festlegen, die soll man ja dann selber eintippen.
Tut mir leid, aber ich habe Informatik noch net so lange..
 
Also mit BlueJ versuch das mal oben über das Menü. Danach Strg+A, Strg+C und Strg+V. Aber setze deinen Code in [code=java] ... [/code]-Tags! Vorher aber aufs Zahnradsymbol (BB-Code umschalten) klicken. Anschließend die Vorschau nutzen.
 
Java:
import java.awt.*; //abstract windowing toolkit    
import javax.swing.*; //swing-Klassen    
import java.awt.event.*; //Event-Klassen   
public class Bruch extends JFrame implements ActionListener   
{    
    private String [] s = {"+","-","/","*","kuerz1","kuerz2","gln.","--","++"};  
    private JButton [] jb = new JButton[s.length];  
    private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6; //Deklaration eines Objektes aus der Klasse JTextField    
    private Font f;    

    private int zaehler ;   
    private int nenner ;   
    private int zaehler2;                                                
    private int nenner2;  
    private int zaehler3; 
    private int nenner3; 
    private int teiler; 

    public Bruch()    

    {    

        super("Mein erstes Fenster"); //ruft den Konstruktor der Oberklasse (JFrame) auf    

        setDefaultCloseOperation(3); //schließen und alle Prozesse beenden    

        setLayout(null); //schaltet Layout Manager aus    

        setBounds(300,200,1000,700); //(x,y Breite,Höhe) vom Fenster    

        getContentPane().setBackground(new Color(198,44,58)); //RGB    

        jtf1 = new JTextField(); //Instanziieren eines neuen Objekts der Klasse JTextField    

        f = new Font("Roman",1,20);    

        jtf1.setFont (f);    

        jtf1.setText("");    

        jtf1.setEditable(true);    

        jtf1.setBounds(100,300,90,60); //am Objekt selber wird Methode aufgerufen    

        add(jtf1); //fügt Objekt dem Cont ainer (=ContentPane) hinzu    

        setVisible(true); //schaltet ganzen JFrame auf SICHTBAR    

        setResizable(false) ;    

        jtf2 = new JTextField(); //Instanziieren eines neuen Objekts der Klasse JTextField    

        jtf2.setFont (f);    
        jtf2.setText("");    
        jtf2.setEditable(true);    
        jtf2.setBounds(100,390,90,60); //am Objekt selber wird Methode aufgerufen    
        add(jtf2); //fügt Objekt dem Container (=ContentPane) hinzu    

        jtf3 = new JTextField();  

        jtf3.setFont (f);    

        jtf3.setText("");    

        jtf3.setEditable(true);    

        jtf3.setBounds(500,300,90,60); //am Objekt selber wird Methode aufgerufen    

        add(jtf3);  

        jtf4 = new JTextField();  

        jtf4.setFont (f);    

        jtf4.setText("");    

        jtf4.setEditable(true);    

        jtf4.setBounds(500,390,90,60); //am Objekt selber wird Methode aufgerufen    

        add(jtf4);  

        jtf5 = new JTextField(); 
        jtf5.setFont (f);    
        jtf5.setText("");    
        jtf5.setEditable(false);    
        jtf5.setBounds(800,300,90,60); //am Objekt selber wird Methode aufgerufen    
        add(jtf5); 

        jtf6 = new JTextField(); 

        jtf6.setFont (f);    

        jtf6.setText("");    

        jtf6.setEditable(false);    

        jtf6.setBounds(800,390,90,60); //am Objekt selber wird Methode aufgerufen    

        add(jtf6); 

        for (int i=0;i<jb.length;i++) {  

            jb[i] =new JButton(s[i]);  

            jb[i].setBounds(230+(i%3)*80,270+(i/3)*80,60,60);  

            add(jb[i]);  

            jb[i].addActionListener(this);  

        }  

    }    

    public int GGT(int k , int n) {  

        if (n==0) return k;  

        if (k==0) return n;   

        if (n==k) return k;  

        if (n>k) return GGT (k , n-k) ;  

        return GGT (n , k-n) ;  

    }  

    public void actionPerformed(ActionEvent e) {   

        if (e.getSource()==jb[0]) {  //Addition
            int zaehler=new Integer (jtf1.getText());
            int zaehler2=new Integer (jtf2.getText());
            int nenner=new Integer (jtf3.getText());
            int nenner2=new Integer(jtf4.getText());
            int zaehler3=new Integer(jtf5.getText());
            int nenner3=new Integer(jtf6.getText());

            addi(zaehler3,nenner3);

        }  
        if (e.getSource()==jb[1]) {  //Subtraktion
            int zaehler=new Integer (jtf1.getText());
            int zaehler2=new Integer (jtf2.getText());
            int nenner=new Integer (jtf3.getText());
            int nenner2=new Integer(jtf4.getText());
            int zaehler3=new Integer(jtf5.getText());
            int nenner3=new Integer(jtf6.getText());

            sub(zaehler3,nenner3);

        } 
        if (e.getSource()==jb[2]) {  //Division
            int zaehler=new Integer (jtf1.getText());
            int zaehler2=new Integer (jtf2.getText());
            int nenner=new Integer (jtf3.getText());
            int nenner2=new Integer(jtf4.getText());
            int zaehler3=new Integer(jtf5.getText());
            int nenner3=new Integer(jtf6.getText());

            div(zaehler3,nenner3);

        }
        if (e.getSource()==jb[3]) {  //Multiplikation
            int zaehler=new Integer (jtf1.getText());
            int zaehler2=new Integer (jtf2.getText());
            int nenner=new Integer (jtf3.getText());
            int nenner2=new Integer(jtf4.getText());
            int zaehler3=new Integer(jtf5.getText());
            int nenner3=new Integer(jtf6.getText());

            mult(zaehler3 , nenner3);
        }
    }

    public void kuerzen (int zaehler3 , int nenner3)  { 
        jtf2.setText(""+nenner/GGT(nenner , zaehler));
        jtf1.setText(""+zaehler/GGT(nenner , zaehler));
    } 

    public void kuerzen2 (int zaehler3 , int nenner3) {
        jtf3.setText(""+nenner2/GGT(nenner2 , zaehler2));
        jtf4.setText(""+zaehler2/GGT(nenner2 , zaehler2));

    }

    public void addi(int zaehler3 , int nenner3) {
        int teiler=GGT(nenner,nenner2); 
        zaehler/=teiler; 
        nenner/=teiler;
        jtf5.setText(zaehler+=zaehler2);
        jtf6.setText(nenner=nenner2);
    }

    public void sub(int zaehler3 , int nenner3) {
        int teiler=GGT(nenner,nenner2);
        zaehler/=teiler;
        nenner/=teiler;
        jtf5.setText(zaehler-=zaehler2);
        jtf6.setText(nenner=nenner2);
    }

    public void div(int zaehler3 , int nenner3) {
        zaehler2=nenner2;
        nenner2=zaehler2;

        jtf5.setText(zaehler*zaehler2);
        jtf6.setText(nenner*nenner2);
    }

    public void mult(int zaehler3 , int nenner3) {
        jtf5.setText(zaehler*zaehler2);
        jtf6.setText(nenner*nenner2);
    }

}
 
Ich hass diesen Stil, so viele newlines einzufügen, nicht jede einzelne Zeile bildet eine logische Zusammenhangskomponente...
 

Neue Themen


Zurück
Oben