JAVA: Taschenrechner programmieren

Status
Für weitere Antworten geschlossen.

M.MA89

Newbie
Registriert
Nov. 2016
Beiträge
3
Hallo, ich bin noch ganz neu in dem Thema Java. Ich hab die Aufgabe einen Taschenrechner zu programmieren jedoch zeigt der mir zwei Fehler an. Sitze schon bisschen dran aber finde nicht woran das liegen kann. Vielleicht kann einer mir helfen würde mich sehr freuen.


import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Taschenrechner extends JFrame implements ActionListener {

public static void main(String[] args) {
new Taschenrechner ();


}

private JTextField txtVar1 = new JTextField ();
private JTextField txtVar2 = new JTextField ();
private JTextField txtErg = new JTextField ();

private JLabel lblVar1 = new JLabel ("Variable 1");
private JLabel lblVar2 = new JLabel ("Variable 2");
private JLabel lblErg = new JLabel ("Ergebnis");

private JButton btplus = new JButton ("+");
private JButton btminus = new JButton ("-");
private JButton btmal = new JButton ("*");
private JButton btgeteilt = new JButton ("/");
private JButton btdel = new JButton ("Löschen");


}

public Taschenrechner() {



Container cp = getContentPane ()
cp.setLayout(null)

lblVar1.setBounds(120,10,60,20)
txtvar1.setBounds(190,10,120,120)
lblVar2.setBounds(120,40,190,20)
txtvar2.setBounds(190,40,120,20)
lblErg.setBounds(120,70,190,20)
txtErg.setBounds(190,70,120,20)
txtErg.setEditable(false)

btplus.setBounds(120,120,50,20)
btminus.setBounds(170,120,50,20)
btmal.setBounds(220,120,50,20)
btgeteilt.setBounds(270,120,50,20)
btdel.setBounds(120,150,100,20)

cp.add(lblVar1)
cp.add(lblVar2)
cp.add(txtVar1)
cp.add(txtVar2)
cp.add(lblErg)
cp.add(txtErg)
cp.add(btplus)
cp.add(btminus)
cp.add(btmal)
cp.add(btgeteilt)
cp.add(btdel)

setTitle("Taschenrechner")
setSize(550,350)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
setVisible(true)

btplus.addActionListener(this)
btminus.addactionListener(this)
btmal.addActionListener(this)
btgeteilt.addActionListener(this)
btdel.addActionListener(this)


}

public void actionPerformed (ActionEvent event) {



double Var1,Var2
Object obj = event.getSource()

if(obj ==btplus) {
Var1 = Double.parseDouble(txtvar1.getText())
Var2 = Double.parseDouble(txtvar2.getText())

Var1 = Var1+Var2
txtErg.setText(""+var1)
// end of if
}
if(obj ==btminus) {
Var1 = Double.parseDouble(txtvar1.getText())
Var2 = Double.parseDouble(txtvar2.getText())

Var1 = Var1-Var2
txtErg.setText(""+var1)
// end of if
}
if(obj ==btmal) {
var1 = Double.parseDouble(txtVar1.getText())
var2 = Double.parseDouble(txtVar2.getText())

Var1 = Var1*Var2
txtErg.setText(""+Var1)
// end of if
}
if(obj ==btgeteilt) {
Var1 = Double.parseDouble(txtVar1.getText())
Var2 = Double.parseDouble(txtVar2.getText())

Var1 = Var1/Var2
txtErg.setText(""+Var1)
// end of if
}
if(obj ==btdel) {
txtVar1.setText("")
txtVar2.setText("")
txtErg.setText("")
// end of if
}

}

}


Fehlermeldung

Taschenrechner.java:30:17: error: class, interface, or enum expected
public Taschenrechner() {
^
Taschenrechner.java:77:17: error: class, interface, or enum expected
public void actionPerformed (ActionEvent event) {
^
2 errors
 
Zuletzt bearbeitet:
Bitte den Code fuers Forum richtig formatieren. Zweitens wird hier ungern bei Hausaufgaben geholfen. Direkte Fragen sind da besser.
Auch ist java swing ziemlich alt. Nutz doch lieber die aktuelle Variante JavaFX fuer Java Guis.

Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Taschenrechner extends JFrame implements ActionListener {

    public static void main(String[] args) {
        new Taschenrechner();


    }

    private JTextField txtVar1 = new JTextField();
    private JTextField txtVar2 = new JTextField();
    private JTextField txtErg = new JTextField();

    private JLabel lblVar1 = new JLabel("Variable 1");
    private JLabel lblVar2 = new JLabel("Variable 2");
    private JLabel lblErg = new JLabel("Ergebnis");

    private JButton btplus = new JButton("+");
    private JButton btminus = new JButton("-");
    private JButton btmal = new JButton("*");
    private JButton btgeteilt = new JButton("/");
    private JButton btdel = new JButton("Löschen");


}

    public Taschenrechner() {


        Container cp = getContentPane()
        cp.setLayout(null)

        lblVar1.setBounds(120, 10, 60, 20)
        txtvar1.setBounds(190, 10, 120, 120)
        lblVar2.setBounds(120, 40, 190, 20)
        txtvar2.setBounds(190, 40, 120, 20)
        lblErg.setBounds(120, 70, 190, 20)
        txtErg.setBounds(190, 70, 120, 20)
        txtErg.setEditable(false)

        btplus.setBounds(120, 120, 50, 20)
        btminus.setBounds(170, 120, 50, 20)
        btmal.setBounds(220, 120, 50, 20)
        btgeteilt.setBounds(270, 120, 50, 20)
        btdel.setBounds(120, 150, 100, 20)

        cp.add(lblVar1)
        cp.add(lblVar2)
        cp.add(txtVar1)
        cp.add(txtVar2)
        cp.add(lblErg)
        cp.add(txtErg)
        cp.add(btplus)
        cp.add(btminus)
        cp.add(btmal)
        cp.add(btgeteilt)
        cp.add(btdel)

        setTitle("Taschenrechner")
        setSize(550, 350)
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
        setVisible(true)

        btplus.addActionListener(this)
        btminus.addactionListener(this)
        btmal.addActionListener(this)
        btgeteilt.addActionListener(this)
        btdel.addActionListener(this)


    }

    public void actionPerformed(ActionEvent event) {


        double Var1, Var2
        Object obj = event.getSource()

        if (obj == btplus) {
            Var1 = Double.parseDouble(txtvar1.getText())
            Var2 = Double.parseDouble(txtvar2.getText())

            Var1 = Var1 + Var2
            txtErg.setText("" + var1)
// end of if 
        }
        if (obj == btminus) {
            Var1 = Double.parseDouble(txtvar1.getText())
            Var2 = Double.parseDouble(txtvar2.getText())

            Var1 = Var1 - Var2
            txtErg.setText("" + var1)
// end of if
        }
        if (obj == btmal) {
            var1 = Double.parseDouble(txtVar1.getText())
            var2 = Double.parseDouble(txtVar2.getText())

            Var1 = Var1 * Var2
            txtErg.setText("" + Var1)
// end of if
        }
        if (obj == btgeteilt) {
            Var1 = Double.parseDouble(txtVar1.getText())
            Var2 = Double.parseDouble(txtVar2.getText())

            Var1 = Var1 / Var2
            txtErg.setText("" + Var1)
// end of if
        }
        if (obj == btdel) {
            txtVar1.setText("")
            txtVar2.setText("")
            txtErg.setText("")
// end of if
        }

    }

}

Da stimmt aktuell irgendwie gar nix. Schieb erstmal alle Methoden und Klassen in die richtige Struktur.
 
Zuletzt bearbeitet:
M.MA89 schrieb:
Ja kannst du mir auch vielleicht sagen was da falsch ist ?

Wo wäre da der Lerneffekt? Schau Dir den Code vor Zeile 30 an und überlege, was hier falsch sein könnte. Die Java-Syntax-Regeln kennst Du?

Der Code hat diverse Fehler. Nicht nur in der Syntax. Aber alle trivial. Dafür braucht man doch keine Forum-Hilfe?
Ergänzung ()

Wenn der Code kompiliert, aber nicht macht, was er soll, dann kann man Antworten auf konkrete Fragen erwarten. Aber Syntax und Semantik sollten IMHO mit dem Regelwerk und Compiler für jeden zu erschließen sein.
 
Wenn ich es richtig sehe, dann gehört die Klammer in Zeile 28 einfach nicht dahin...
 
Und bitte, bitte, bitte verwende niemals absolute Positionierung, wenn es nicht unbedingt sein muss.
 
Was für eine Entwicklungsumgebung nutzt du? In deinem Code hat es mehr inkorrekte Zeilen als korrekte.

Alleine schon die unzähligen ; die fehlen.


EDIT:

Erste Aufgabe: Syntax richtig stellen!

Dann sieht es nämlich bereits so aus:
SyntaxFixedResult.PNG



Ich habe noch nichts am Code selbst umgeschrieben und auch noch keine Funktionstests durchgeführt, nur die Syntax wurde richtiggestellt.
Ein bisschen netter könnte es zwar schon aussehen... da musst du noch etwas schieben.


EDIT2: Java ist übrigens case sensitive - heisst: Gross-/Kleinschreibung macht einen Unterschied!
 
Zuletzt bearbeitet:
Danke ich habe es etwas geändert. Das mit dem Verschieben mache ich zum Schluss wenn es endlich mal läuft. Ich sitze seit gestern dran. Der zeigt mir 1 Fehler an. Das wieß ich leider nicht wie ich es beheben kann.

Taschenrechner.java:126:15: error: reached end of file while parsing
}
^
1 error
 
Nach dem Syntax Fix musste ich nur noch ein einziges Zeichen ändern und das Ding funktioniert, zumindest mit einfachen Zahlen. Das ist kein Witz, ist wirklich so.

Hast du wirklich die Syntax behoben? Ich frage dich nochmals, welche Entwicklungsumgebung nutzt du?
 
Der Fehler besagt, dass der Compiler unerwarteter Weise ans Ende der Datei angelangt ist, während ein Syntax-Element erwartet wird.

Sind alle Klammern korrekt gesetzt? Für jede öffnende Klammer muss es genau eine schließende geben.
 
M.MA89 schrieb:
Danke ich habe es etwas geändert. Das mit dem Verschieben mache ich zum Schluss wenn es endlich mal läuft. Ich sitze seit gestern dran. Der zeigt mir 1 Fehler an. Das wieß ich leider nicht wie ich es beheben kann.

Taschenrechner.java:126:15: error: reached end of file while parsing
}
^
1 error

Der Fehler sagt wohl, dass er eine geschweifte Klammer zu erwartet. Also überprüfe mal ob es zu jeder offenen auch eine geschlossene geschweifte Klammer gibt. Eine Entwicklungsumgebung sollte Dich aber auf solche Probleme auch hinweisen. Zum Programmieren lernen gehört auch Fehlermeldungen verstehen lernen. Oder zu ergooglen.
 
Eine Klammer ist zu viel, stimmt schon.

Ist eigentlich offensichtlich (und es wurde sogar schon darauf hingewiesen), aber er scheint kein allzu grosses Interesse daran zu haben uns die verwendete Entwicklungsumgebung zu nennen.

EDIT: Ja gut, ich hätte wohl besser die Fehlermeldung gelesen...
 
Zuletzt bearbeitet:
@slumpie Das war bei der Ausgangsdatei. Die wurde verändert. Jetzt fehlt vermutlich eine Klammer.
 
Ach so, stimmt eigentich. Hätte wohl besser die Fehlermeldung richtig gelesen. :p
War noch fixiert auf den oben gezeigten Code.

Aber gut...
Eigentlich müssen nur ein paar ; gesetzt und die Gross-/Kleinschreibung überprüft werden um korrekte Referenzen zu haben. Dann die eine Klammer noch weg und eine einzige Zahl im gesammten Code abgeändert ergibt dann einen funktionierenden Taschenrechner.

Vielleicht mal "setBounds" in der Java Dokumentation nachschlagen, der Lehrer war wohl ein wenig gemein... ;) , ausser der OP hätte das echt selbst programmiert, wobei ich daran meine Zweifel habe.
 
ab jetzt sollte er die "Aufgabe" alleine lösen.
Btw für Hausaufgaben ist CB der falsche Ort.
 
  • Gefällt mir
Reaktionen: longi
Status
Für weitere Antworten geschlossen.
Zurück
Oben