Este artículo resume los métodos comunes para escribir calculadoras en Java. Compártelo para su referencia, como sigue:
Método 1:
paquete wanwa; import java.awt.*; import java.awt.event.*; import javax.swing.*; la calculadora de clase pública extiende jframe {privado contenedor contenedor; private gridbagLayout Layout; private GridbagConstaints restricts; private jTextfieldfield; // Cálculo de calculación de la pantalla de exposición de calculaciones de la pantalla de exposición; Guardar el resultado de los cálculos de inicio booleano privado; // Determine si es el comienzo de un número de calculator público () {super ("calculator"); contenedor = getContentPane (); Layout = new GridBagLayout (); Container.SetLayout (Layout); restricts = new GridBagConstraints (); start = true; resultado = 0; LastCommand = "; DisplayField); JTextfield (20); displayfield.sethorizontalAlignment (jTextfield.right); restricciones restricciones); contenedor.add (displayfield); ActionListener insert = new InsertAction (); ActionListener command = new CommandAction (); // addButton ("Backspace", 0, 1, 2, 1, Insert); // addButton ("Ce", 2, 1, 1, 1, inserto); // addButton ("C", 3, 1, 1, 1, inserto); 2, 1, 1, insert);addButton("8", 1, 2, 1, 1, insert);addButton("9", 2, 2, 1, 1, insert);addButton("/", 3, 2, 1, 1, command);addButton("4", 0, 3, 1, 1, insert);addButton("5", 1, 3, 1, addButton("6", 2, 3, 1, 1, insertar); addButton ("*", 3, 3, 1, 1, comando); addButton ("1", 0, 4, 1, 1, insertar); addButton ("2", 1, 4, 1, 1, inserción); addButton ("3", 2, 4, 1, 1, insert); addButton ("--", 3, 4, 1, 1, comando); 5, 1, 1, insertar); // addButton ("+/-", 1, 5, 1, 1, 1, 1, insertar); // Solo muestra el "-" signo ",+" no tiene valor práctico addButton (".", 2, 5, 1, 1, insertar); addButton ("+", 3, 5, 1, 1, comando); addButton ("=", 0, 6, 1, 1, 1, 1, 1, 1,; this.setResizable (false); setSize (180, 200); setVisible (true);} private void addButton (etiqueta de cadena, int fila, int columna, int con, int hight, ActionListener Listener) {jButton Button = new JButton (Label); Relitions.gridx = Rown.ritands.gridy = columna; COLUNTS.GRIDWIDTH = con; Height; restricts.fill = GridbagConstraints.both; Button.AdDactionListener (oyente); Layout.SetConstraints (Button, restricts); Container.add (Button);} private clase inserción de inserción implementa actionListener {public void accionperformed (ActionEvent Event) {string input = event.getActionCommand (); if (start) {showlefield.st. falso; if (input.equals ("+/-")) displayfield.settext (displayfield.gettext ()+"-");} if (! input.equals ("+/-")) {if (input.equals ("backspace")) {stry str = displayfield.getText (); if (str.lenggth ()> 0) displayfield.settext (str.subString (0, 0, 0, 0, 0, 0, () 1));} else if (input.equals ("ce") || input.equals ("c"))) {displayfield.settext ("0"); start = true;} elsedisplayfield.settext (displayfield.getText () + input);}}}}} de la clase privada ComandactAction implementa ActionListener (public Void Actionperformed (ActionVent Evt) Evt) evt.getActionCommand (); if (start) {lastCommand = command; } else {calcular (double.parsedubo (displayfield.gettext ())); lastCommand = comando; inicio = verdadero; }}} public void calculación (doble x) {if (lastCommand.equals (" +")) resultado += x; else if (lastCommand.equals (" -")) resultado -= x; else if (lastCommand.equals (" *")) resultado *= x; else if (lastCommand.equals (" /") Result /= x; el más if (lo más x; displayfield.setText ("" + resultado);} public static void main (string [] args) {calculator calculate = new calculator (); calculator.setDefaultCloseOperation (jframe.exit_on_close);}}Método 2:
import java.awt.*; import java.awt.event.*; public class MyCalculator {marco privado f; Textfield privado tf = nuevo TextField (30); Resultado largo privado; append booleano privado = falso; operador de char private = '='; botón privado [] btn = botón nuevo [15]; public MyCalculator () {initComponent (); } private void initcomponent () {f = new Frame ("Mi calculadora v1.0"); F.SetLayout (new BorderLayout ()); // El marco usa BorderLayout F.Addwindowlistener (nuevo WindowAdapter () {public void WindowClosing (WindowsEvent Evt) {System.exit (0);}}); Panel CenterPanel = nuevo panel (); CenterPanel.setLayout (nuevo GridLayout (5, 3)); // El panel usa GridLayout NumberListener nl = new NumberListener (); OperatorListener ol = new OperatorListener (); btn [10] = botón nuevo ("+"); btn [11] = botón nuevo ("-"); btn [12] = botón nuevo ("*"); btn [13] = botón nuevo ("/"); btn [14] = botón nuevo ("="); for (int i = 0; i <= 9; i ++) {btn [i] = new Button (String.ValueOf (i)); CenterPanel.Add (BTN [i]); btn [i] .addactionListener (nl); if (i%2 == 1) {centerPanel.add (btn [(i+19)/2]); btn [(i+19)/2] .addactionListener (ol); }} F.Add (CenterPanel, BorderLayout.Center); Panel northPanel = nuevo panel (); tf.setEditable (falso); northpanel.add (tf); F.Add (NorthPanel, BorderLayout.north); } public void go () {f.pack (); F.SetVisible (verdadero); } public static void main (string [] args) {new MyCalculator (). Go (); } /***Use el método de clase interna para implementar la interfaz del oyente para facilitar el acceso a los miembros internos de la clase principal dentro de la clase. *Esta clase es responsable de la escucha y el manejo de los eventos de acción del botón Número*/ Clase NumberListener implementa ActionListener {public void ActionPerformed (ActionEvent E) {if (! Append) {tf.setText (""); append = true; } Cadena s = tf.gettext (); s+= E.getActionCommand (); tf.settext (s); if (! btn [10] .Isenable ()) {for (int i = 10; i <= 14; i ++) btn [i] .setenable (true); }}} / *** Clase interna del miembro, responsable del manejo de eventos de los botones del operador* / class OperatorListener implementa ActionListener {public void ActionPerformed (ActionEvent E) {if (! Append) return; para (int i = 10; i <= 14; i ++) btn [i] .setenable (falso); Cadena s = tf.gettext (); long num = long.parselong (s); // Obtenga el número de TextField append = false; // establecer el interruptor de append (operador) {case '+': resultado+= num; break; caso '-': resultado- = num; break; caso '*': resultado*= num; ruptura; case '/': {if (num == 0) resultado = 0; el más resultado/= num; romper; } case '=': resultado = num; break; } tf.setText (string.ValueOf (resultado)); // Establecer el valor del resultado en TextField String OP = E.GetActionCommand (); operador = op.charat (0); // Establecer operador}}}Método 3:
paquete wanwa; import java.util.*; public class calc {public static void main (string [] args) {scanner input = new Scanner (System.in); System.out.println ("********************************"); System.out.println ("*/T/T/T/T/T/T/T*"); Para su uso: 1. Adición 2. Subtracción 3. Multiplicación 4. División*"); System.out.println ("*/t/t/t/t/t/t/t*"); system.out.println (" ************************************************************** i = 0; i <100; i ++) {system.out.print ("/nlease seleccione las reglas de operación:"); int num = input.nextInt (); switch (num) {caso 1: system.out.println ("/n ****** Ha seleccionado suma ***********/n"); system.out.print ("Ingrese el primer sumador:"); int jiashu1 = input.nextint (); System.out.Print ("Por favor ingrese el segundo adder:"); int jiashu2 = input.nextint (); system.print (pRIS IS: " + jiashu1 +" + " + jiashu1 +" = " + (jiashu1 + jiashu2)); break; case 2: system.out.println ("/n ****** ha seleccionado la subtracción *********/n "); system.print (" por favor ingrese la subtracción: "); intjianshu1 = input.nextint (););" Ingrese la subtracción: "); int jianshu2 = input.nextInt (); system.out.println (" El resultado de la operación es: " + jianshu1 +" - " + jiAnshu2 +" = " + (jianshu1 - jianShu2)); break; case 3: system.println ("/n ****** Usted seleccionó multiplication*******/n");System.out.print("Please enter the first factor:");int chengfa1 = input.nextInt();System.out.print("Please enter the second factor:");int chengfa2 = input.nextInt();System.out.println("The operation result is:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1*chengfa2)); break; caso 4: system.out.println ("/n ****** Seleccionó la división *********/n"); system.out.print ("por favor ingrese el divisor:"); doble chufa1 = input.nextint (); System.print ("Ingrese el divisor:"); input.nextInt (); system.out.println ("El resultado de la operación es:" + chufa1 + " /" + chufa2 + "=" + (chufa1 / chufa2) + "yu" + (chufa1 % chufa2)); rompiendo; predeterminado: system.println (" / nyour la elección está mal, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor, por favor. volver a seleccionar! "); break;}}}}Método 4:
paquete wanwa; import java.awt.*; import java.awt.event.*; import javax.swing.*; la calculadora de clase pública extiende jframe {privado contenedor contenedor; private gridbagLayout Layout; private GridbagConstaints restricts; private jTextfieldfield; // Cálculo de calculación de la pantalla de exposición de calculaciones de la pantalla de exposición; Guardar el resultado de los cálculos de inicio booleano privado; // Determine si es el comienzo de un número de calculator público () {super ("calculator"); contenedor = getContentPane (); Layout = new GridBagLayout (); Container.SetLayout (Layout); restricts = new GridBagConstraints (); start = true; resultado = 0; LastCommand = "; DisplayField); JTextfield (20); displayfield.sethorizontalAlignment (jTextfield.right); restricciones restricciones); contenedor.add (displayfield); ActionListener insert = new InsertAction (); ActionListener command = new CommandAction (); // addButton ("Backspace", 0, 1, 2, 1, Insert); // addButton ("Ce", 2, 1, 1, 1, inserto); // addButton ("C", 3, 1, 1, 1, inserto); 2, 1, 1, insert);addButton("8", 1, 2, 1, 1, insert);addButton("9", 2, 2, 1, 1, insert);addButton("/", 3, 2, 1, 1, command);addButton("4", 0, 3, 1, 1, insert);addButton("5", 1, 3, 1, addButton("6", 2, 3, 1, 1, insertar); addButton ("*", 3, 3, 1, 1, comando); addButton ("1", 0, 4, 1, 1, insertar); addButton ("2", 1, 4, 1, 1, inserción); addButton ("3", 2, 4, 1, 1, insert); addButton ("--", 3, 4, 1, 1, comando); 5, 1, 1, insertar); // addButton ("+/-", 1, 5, 1, 1, 1, 1, insertar); // Solo muestra el "-" signo ",+" no tiene valor práctico addButton (".", 2, 5, 1, 1, insertar); addButton ("+", 3, 5, 1, 1, comando); addButton ("=", 0, 6, 1, 1, 1, 1, 1, 1,; this.setResizable (false); setSize (180, 200); setVisible (true);} private void addButton (etiqueta de cadena, int fila, int columna, int con, int hight, ActionListener Listener) {jButton Button = new JButton (Label); Relitions.gridx = Rown.ritands.gridy = columna; COLUNTS.GRIDWIDTH = con; Height; restricts.fill = GridbagConstraints.both; Button.AdDactionListener (oyente); Layout.SetConstraints (Button, restricts); Container.add (Button);} private clase inserción de inserción implementa actionListener {public void accionperformed (ActionEvent Event) {string input = event.getActionCommand (); if (start) {showlefield.st. falso; if (input.equals ("+/-")) displayfield.settext (displayfield.gettext ()+"-");} if (! input.equals ("+/-")) {if (input.equals ("backspace")) {stry str = displayfield.getText (); if (str.lenggth ()> 0) displayfield.settext (str.subString (0, 0, 0, 0, 0, 0, () 1));} else if (input.equals ("ce") || input.equals ("c"))) {displayfield.settext ("0"); start = true;} elsedisplayfield.settext (displayfield.getText () + input);}}}}} de la clase privada ComandactAction implementa ActionListener (public Void Actionperformed (ActionVent Evt) Evt) evt.getActionCommand (); if (start) {lastCommand = command; } else {calcular (double.parsedubo (displayfield.gettext ())); lastCommand = comando; inicio = verdadero; }}} public void calculación (doble x) {if (lastCommand.equals (" +")) resultado += x; else if (lastCommand.equals (" -")) resultado -= x; else if (lastCommand.equals (" *")) resultado *= x; else if (lastCommand.equals (" /") Result /= x; el más if (lo más x; displayfield.setText ("" + resultado);} public static void main (string [] args) {calculator calculate = new calculator (); calculator.setDefaultCloseOperation (jframe.exit_on_close);}}Espero que este artículo sea útil para la programación Java de todos.