English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Beispiel zur Implementierung einer Rechenfunktion in Java (basierend auf Swing-Komponenten)

Dieser Artikel erläutert die Implementierung der Rechnerfunktion in Java. Hiermit wird eine Referenz für alle bereitgestellt, wie folgt:

package awtDemo;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class Calculator extends JFrame implements ActionListener {
    private final String[] KEYS = { ""7""8""9""/"", "Quadratwurzel", ""4""5""6"",
            ""*"", "%%", ""1""2""3""-""1/"x", "0", ""+/-", ".", ""+", "=");
    private final String[] COMMAND = { "Rücktaste", "CE", "C" };
    private JButton keys[] = new JButton[KEYS.length];
    private JButton commands[] = new JButton[COMMAND.length];
    private JTextField resultText = new JTextField("0");
    private boolean firstDigit = true;
    private double resultNum = 0.0;
    private String operator = "=";
    private boolean operateValidFlag = true;
    public Rechner() {
        init();
        this.setBackground(Color.LIGHT_GRAY);
        this.setTitle("de.oldtoolbag.com - Rechner");
        this.setLocation(500, 300);
        this.setResizable(false);
        this.pack();
    }
    private void init() {
        resultText.setHorizontalAlignment(JTextField.RIGHT);
        resultText.setEditable(false);
        resultText.setBackground(Color.white);
        JPanel calckeysPanel = new JPanel();
        calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));
        for (int i = 0; i < KEYS.length; i++) {
            keys[i] = new JButton(KEYS[i]);
            calckeysPanel.add(keys[i]);
            keys[i].setForeground(Color.blue);
        }
        keys[3].setForeground(Color.red);
        keys[8].setForeground(Color.red);
        keys[13].setForeground(Color.red);
        keys[18].setForeground(Color.red);
        keys[19].setForeground(Color.red);
        JPanel commandsPanel = new JPanel();
        commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));
        for (int i = 0; i < COMMAND.length; i++) {
            commands[i] = new JButton(COMMAND[i]);
            commandsPanel.add(commands[i]);
            commands[i].setForeground(Color.red);
        }
        JPanel panel1 = new JPanel();
        panel1.setLayout(new BorderLayout(3, 3));
        panel1.add("North", commandsPanel);
        panel1.add("West", calckeysPanel);
        JPanel top = new JPanel();
        top.setLayout(new BorderLayout());
        top.add("Center", resultText);
        getContentPane().setLayout(new BorderLayout(3, 5));
        getContentPane().add("North", top);
        getContentPane().add("Center", panel1);
        for (int i = 0; i < KEYS.length; i++) {
            keys[i].addActionListener(this);
        }
        for (int i = 0; i < COMMAND.length; i++) {
            commands[i].addActionListener(this);
        }
    }
    public void actionPerformed(ActionEvent e) {
        String label = e.getActionCommand();
        if (label.equals(COMMAND[0])) {
            handleBackspace();
        } else if (label.equals(COMMAND[1)) {
            resultText.setText("0");
        } else if (label.equals(COMMAND[2)) {
            handleC();
        } else if ("0123456789.indexOf(label) >= 0) {
            handleNumber(label);
        } else {
            handleOperator(label);
        }
    }
    private void handleBackspace() {
        String text = resultText.getText();
        int i = text.length();
        if (i > 0) {
            text = text.substring(0, i - 1);
            if (text.length() == 0) {
                resultText.setText("0");
                firstDigit = true;
                operator = "=";
            } else {
                resultText.setText(text);
            }
        }
    }
    private void handleNumber(String key) {
        if (firstDigit) {
            resultText.setText(key);
        } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) {
            resultText.setText(resultText.getText()} + ".");
        else if (!key.equals(".")) {
            resultText.setText(resultText.getText()} + key);
        }
        firstDigit = false;
    }
    private void handleC() {
        resultText.setText("0");
        firstDigit = true;
        operator = "=";
    }
    private void handleOperator(String key) {
        if (operator.equals("=") ) {/")) {
            if (getNumberFromText() == 0.0) {
                operateValidFlag = false;
                resultText.setText("除数不能为零");
            } else {
                resultNum /= getNumberFromText();
            }
        }1/x")) {
            if (resultNum == 0.0) {
                operateValidFlag = false;
                resultText.setText("零没有倒数");
            } else {
                resultNum = 1 / resultNum;
            }
        }+")) {
            resultNum += getNumberFromText();
        }-")) {
            resultNum -= getNumberFromText();
        }*")) {
            resultNum *= getNumberFromText();
        }
            resultNum = Math.sqrt(resultNum);
        }
            resultNum = resultNum / 10} else if (operator.equals("=") ) {
        }+/-")) {
            resultNum = resultNum * (-1);
        } else if (operator.equals("=") ) {
            resultNum = getNumberFromText();
        }
        if (operateValidFlag) {
            long t1;
            double t2;
            t1 = (long) resultNum;
            t2 = resultNum - t1;
            if (t2 == 0) {
                resultText.setText(String.valueOf(t1));
            } else {
                resultText.setText(String.valueOf(resultNum));
            }
        }
        operator = key;
        firstDigit = true;
        operateValidFlag = true;
    }
    private double getNumberFromText() {
        double result = 0;
        try {
            result = Double.valueOf(resultText.getText()).doubleValue();
        } catch (NumberFormatException e) {
        }
        return result;
    }
    public static void main(String args[]) {
        Calculator calculator1 = new Calculator();
        calculator1.setVisible(true);
        calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Laufende Effekte:

PS: Hier einige weitere Berechnungstools werden empfohlen, um für weitere Referenz und Vergleich genutzt zu werden:

Online-Lösung von einzeiligen Funktionen (Gleichungen) Berechnungstool:
http://tools.jb51.net/jisuanqi/equ_jisuanqi

Online-Wissenschaftsrechner Verwendung: Hochwertiger Online-Rechner Berechnung:
http://tools.jb51.net/jisuanqi/jsqkexue

Online-Rechner_Standardrechner:
http://tools.jb51.net/jisuanqi/jsq

Interessierte Leser, die mehr über Java-Algorithmen erfahren möchten, können die Themen der Website überprüfen: "Java Datenstrukturen und Algorithmen Anleitung", "Java DOM-Nodes-Techniken Zusammenfassung", "Java Datei- und Verzeichnis-Operationen Techniken Zusammenfassung" und "Java Cache-Operationen Techniken Zusammenfassung"

Es wird gehofft, dass die in diesem Artikel beschriebenen Inhalte allen bei der Java-Programmgestaltung helfen.

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet bezogen und gehört dem Urheberrechtlichem Eigentümer. Der Inhalt wurde von Internetbenutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige urheberrechtliche Inhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden:3codebox.com (Bitte ersetzen Sie # durch @ beim Senden einer E-Mail zur Meldung von Verstößen und fügen Sie relevante Beweise bei. Sobald nachgewiesen, wird diese Website die beanstandeten urheberrechtlichen Inhalte sofort löschen.)

Gefällt Ihnen