Hallo zusammen,
ich bin in Moment dabei einen Rechner in Java mit GUI zu programmieren. Leider stehe ich gerade auf dem Schlauch, wie ich es schaffen kann, unendlich viele Zahlen miteinander zu verrechnen. Ich hoffe, es kann mir jemand dabei helfen. Hier seht ihr noch, was ich bisher schon programmiert habe. Vielen Dank schonmal im Voraus.
Meine Main Klasse:
Und meine MyFrame Klasse
ich bin in Moment dabei einen Rechner in Java mit GUI zu programmieren. Leider stehe ich gerade auf dem Schlauch, wie ich es schaffen kann, unendlich viele Zahlen miteinander zu verrechnen. Ich hoffe, es kann mir jemand dabei helfen. Hier seht ihr noch, was ich bisher schon programmiert habe. Vielen Dank schonmal im Voraus.
Meine Main Klasse:
Java:
import java.util.Arrays;
public class Main {
static double[] zahlen = new double[200];
static double[] zahlen2 = new double[200];
static char[] rechenzeichen = new char[100];
static double ergebnis;
public static void main(String[] args)
{
int zähler = 0;
MyFrame frame = new MyFrame();
Arrays.fill(zahlen, 0);
Arrays.fill(rechenzeichen,'x');
while (true) {
if (frame.zwischenrechenzeichen.equals("=")) {
System.out.println(ergebnis);
}
else if (frame.zwischenrechenzeichen.equals("+")) {
zahlen[zähler] = Double.parseDouble(frame.zwischenzahl);
rechenzeichen[zähler] = '+';
zähler++;
} else if (frame.zwischenrechenzeichen.equals("-")) {
zahlen[zähler] = Double.parseDouble(frame.zwischenzahl);
rechenzeichen[zähler] = '-';
zähler++;
} else if (frame.zwischenrechenzeichen.equals("x")) {
zahlen[zähler] = Double.parseDouble(frame.zwischenzahl);
rechenzeichen[zähler] = 'x';
zähler++;
}else if (frame.zwischenrechenzeichen.equals("/")) {
zahlen[zähler] = Double.parseDouble(frame.zwischenzahl);
rechenzeichen[zähler] = '/';
zähler++;
}
for (int i = 0; i < rechenzeichen.length; i++) {
zahlen2 = zahlen.clone();
if (rechenzeichen[i] == 'x' || rechenzeichen[i] == '/')
{
if (rechenzeichen[i] == 'x'){
zahlen[i-1] = 0;
zahlen2[i] = zahlen [i-1] * zahlen[i];
} else if (rechenzeichen[i] == '/') {
zahlen[i-1] = 0;
zahlen2[i] = zahlen [i-1] / zahlen[i];
}
}
}
}
}
}
Und meine MyFrame Klasse
Code:
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MyFrame extends JFrame
{
String[] zahlen = new String[100];
String zwischenzahl=new String("");
List<String> listezahlen = new ArrayList<String>();
Character zwischenrechenzeichen;
JLabel rechnunglabel;
String rechnung;
JPanel rechnunghintergrund;
JButton[] Buttonnumbers = new JButton[10];
JButton kommerta = new JButton();
JButton plusminus = new JButton();
JButton plus = new JButton();
JButton minus = new JButton();
JButton mal = new JButton();
JButton geteilt = new JButton();
JButton gleich = new JButton();
MyFrame()
{
this.setTitle("Rechner");
this.setSize(400, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon image = new ImageIcon("D://Java//IntelliJ IDEA Community Edition 2022.2.1//Projekts//Rechner//src//Rechner_logo.png");
this.setIconImage(image.getImage());
this.getContentPane().setBackground(new Color(0x123456));
this.setResizable(true);
this.setLayout(null);
Arrays.fill(this.zahlen, new String("0"));
zwischenrechenzeichen = 'z';
rechnunghintergrund = new JPanel();
rechnunghintergrund.setBounds(0,0,400,125);
rechnunghintergrund.setBackground(new Color(0x02164E));
rechnunglabel = new JLabel();
rechnunglabel.setText("");
for (int i = 0; i < Buttonnumbers.length; i++) {
Buttonnumbers[i] = new JButton();
Buttonnumbers[i].setText(String.valueOf(i));
Buttonnumbers[i].setFont(new Font("Comic Sans", Font.BOLD, 30));
Buttonnumbers[i].setFocusable(false);
this.add(Buttonnumbers[i]);
}
Buttonnumbers[0].setBounds(110,500,70,50);
Buttonnumbers[1].setBounds(10,425,70,50);
Buttonnumbers[2].setBounds(110,425,70,50);
Buttonnumbers[3].setBounds(210,425,70,50);
Buttonnumbers[4].setBounds(10,350,70,50);
Buttonnumbers[5].setBounds(110,350,70,50);
Buttonnumbers[6].setBounds(210,350,70,50);
Buttonnumbers[7].setBounds(10,275,70,50);
Buttonnumbers[8].setBounds(110,275,70,50);
Buttonnumbers[9].setBounds(210,275,70,50);
Buttonnumbers[0].addActionListener(e -> {
listezahlen.add("0");
});
Buttonnumbers[1].addActionListener(e -> {
listezahlen.add("1");
});
Buttonnumbers[2].addActionListener(e -> {
listezahlen.add("2");
});
Buttonnumbers[3].addActionListener(e -> {
listezahlen.add("3");
});
Buttonnumbers[4].addActionListener(e -> {
listezahlen.add("4");
});
Buttonnumbers[5].addActionListener(e -> {
listezahlen.add("5");
});
Buttonnumbers[6].addActionListener(e -> {
listezahlen.add("6");
});
Buttonnumbers[7].addActionListener(e -> {
listezahlen.add("7");
});
Buttonnumbers[8].addActionListener(e -> {
listezahlen.add("8");
});
Buttonnumbers[9].addActionListener(e -> {
listezahlen.add("9");
});
kommerta.setText(",");
kommerta.setFont(new Font("Comic Sans", Font.BOLD, 30));
kommerta.setFocusable(false);
kommerta.setBounds(210,500,70,50);
kommerta.addActionListener(e -> {
listezahlen.add(".");
});
this.add(kommerta);
plusminus.setText("+/-");
plusminus.setFocusable(false);
plusminus.setBounds(10,500,70,50);
plusminus.addActionListener(e -> {
zwischenzahl = String.join(listezahlen.toString());
listezahlen.clear();
zwischenrechenzeichen = '-';
});
this.add(plusminus);
plus.setText("+");
plus.setFont(new Font("Comic Sans", Font.BOLD, 30));
plus.setFocusable(false);
plus.setBounds(310,425,70,50);
plus.addActionListener(e -> {
zwischenzahl = String.join(listezahlen.toString());
listezahlen.clear();
zwischenrechenzeichen = '+';
});
this.add(plus);
minus.setText("-");
minus.setFont(new Font("Comic Sans", Font.BOLD, 30));
minus.setFocusable(false);
minus.setBounds(310,350,70,50);
minus.addActionListener(e -> {
zwischenzahl = String.join(listezahlen.toString());
listezahlen.clear();
zwischenrechenzeichen = '-';
});
this.add(minus);
mal.setText("x");
mal.setFont(new Font("Comic Sans", Font.BOLD, 30));
mal.setFocusable(false);
mal.setBounds(310,275,70,50);
mal.addActionListener(e -> {
zwischenzahl = String.join(listezahlen.toString());
listezahlen.clear();
zwischenrechenzeichen = 'x';
});
this.add(mal);
geteilt.setText("/");
geteilt.setFont(new Font("Comic Sans", Font.BOLD, 30));
geteilt.setFocusable(false);
geteilt.setBounds(310,200,70,50);
geteilt.addActionListener(e -> {
zwischenzahl = String.join(listezahlen.toString());
zwischenrechenzeichen = '/';
});
this.add(geteilt);
gleich.setText("=");
gleich.setFont(new Font("Comic Sans", Font.BOLD, 30));
gleich.setFocusable(false);
gleich.setBounds(310,500,70,50);
gleich.addActionListener(e -> {
zwischenzahl = String.join(listezahlen.toString());
listezahlen.clear();
for (JButton number : Buttonnumbers) {
number.setEnabled(false);
}
kommerta.setEnabled(false);
plusminus.setEnabled(false);
plus.setEnabled(false);
minus.setEnabled(false);
mal.setEnabled(false);
geteilt.setEnabled(false);
gleich.setEnabled(false);
});
this.add(gleich);
//this.setExtendedState(MAXIMIZED_BOTH); Fullscreen
rechnunglabel.setBounds(100,50,1000,25);
rechnunglabel.setFont(new Font("Comic Sans", Font.BOLD, 20));
rechnunglabel.setForeground(Color.WHITE);
//rechnunglabel.setText("");
this.add(rechnunglabel);
this.add(rechnunghintergrund);
this.setVisible(true);
}
}