Este artículo describe las funciones de la calculadora implementadas por Java. Compártelo para su referencia, como sigue:
paquete awtdemo; import java.awt.borderloyout; 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.JTextField;@SuppressWarnings("serial")public class Calculator extends JFrame implements ActionListener { private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "="}; string final private [] command = {"Backspace", "Ce", "C"}; Keys private JButton [] = new JButton [keys.length]; Comandos privados JButton [] = new JButton [Command.Length]; Private JTextField resultText = new JTextField ("0"); Private Boolean FirstDigit = True; Doble resultado privado = 0.0; operador de cadena privada = "="; operador booleano privadovalidflag = true; calculator público () {init (); this.setbackground (color.light_gray); this.settitle ("www.vevb.com - calculadora"); this.setLocation (500, 300); this.setResizable (falso); this.pack (); } private void init () {resultText.SethorizontalAlignment (jTextField.Right); result dext.setedable (falso); ResultText.setBackground (color.white); JPanel CalcKeySpanel = new JPanel (); calcKeySpanel.setLayout (nuevo GridLayout (4, 5, 3, 3)); for (int i = 0; i <keys.length; i ++) {keys [i] = new JButton (Keys [i]); calcKeySpanel.add (claves [i]); claves [i] .setForeground (color.blue); } claves [3] .setForeGround (color.red); claves [8] .setForeground (color.red); teclas [13] .setForeground (color.red); claves [18] .setForeground (color.red); claves [19] .setForeground (color.red); Jpanel commandspanel = new JPanel (); CommandSpanel.setLayout (nuevo GridLayout (1, 3, 3, 3)); for (int i = 0; i <command.length; i ++) {comandos [i] = new JButton (comando [i]); CommandSpanel.Add (comandos [i]); comandos [i] .setForeGround (color.red); } Jpanel panel1 = new JPanel (); panel1.setLayout (nuevo BorderLayout (3, 3)); panel1.Add ("Norte", CommandSpanel); panel1.add ("oeste", calckeyyspanel); Jpanel top = new JPanel (); top.setLayout (new BorderLayout ()); top.Add ("Center", resultText); getContentPane (). SetLayout (nuevo BorderLayout (3, 5)); getContentPane (). Agregar ("Norte", superior); getContentPane (). add ("Center", panel1); for (int i = 0; i <keys.length; i ++) {teclas [i] .addactionListener (this); } for (int i = 0; i <command.length; i ++) {comandos [i] .addactionListener (this); }} public void ActionPerformed (ActionEvent E) {String Label = E.GetActionCommand (); if (etiqueta.equals (comando [0])) {HandlebackSpace (); } else if (etiqueta } else if (etiqueta.equals (comando [2])) {handLec (); } else if ("0123456789.". indexOf (etiqueta)> = 0) {handlEnumber (etiqueta); } else {HandleOperator (etiqueta); }} private void handlebackspace () {string text = resultText.gettext (); int i = text.length (); if (i> 0) {text = text.substring (0, i - 1); if (text.length () == 0) {resultext.setText ("0"); FirstDigit = True; operador = "="; } else {resultext.settext (texto); }}} private void handlEnumber (tecla de cadena) {if (FirstDigit) {resultText.SetText (Key); } else if ((key.equals (".")) && (resultext.getText (). indexOf (".") <0)) {resulteText.setText (resultext.gettext () + "."); } else if (! key.equals (".")) {dulteText.setText (resultext.gettext () + key); } FirstDigit = false; } private void handlec () {resultext.setText ("0"); FirstDigit = True; operador = "="; } private void handleOperator (tecla de cadena) {if (operator.equals ("/")) {if (getNumberFromText () == 0.0) {OperatorValidFlag = false; resultText.setText ("El divorcio no puede ser cero"); } else {resultNum /= getNumberFromText (); }} else if (operator.equals ("1/x")) {if (resultNum == 0.0) {OperatorValIdFlag = false; resultText.setText ("cero no tiene recíproco"); } else {resultNum = 1 / resultNum; }} else if (operator.equals (" +")) {resultNum += getNumberFromText (); } else if (operator.equals (" -")) {resultNum -= getNumberFromText (); } else if (operator.equals (" *")) {resultNum *= getNumberFromText (); } else if (operator.equals (" *")) {resultNum *= getNumberFromText (); } else if (operator.equals (" *")) {resultNum *= getNumberFromText (); } else if (operator.equals (" *")) {resultNum *= getNumberFromText (); } else if (operator.equals ("sqrt")) {resultNum = math.sqrt (resultNum); } else if (operator.equals ("%")) {resultNum = resultNum / 100; } else if (operator.equals ("+/-")) {resultNum = resultNum * (-1); } else if (operator.equals ("=")) {resultNum = getNumberFromText (); } if (operateValidFlag) {long t1; doble T2; t1 = (largo) resultadonum; t2 = resultNum - t1; if (t2 == 0) {resultext.settext (string.ValueOf (t1)); } else {resultext.settext (string.ValueOf (resultNum)); }} operador = clave; FirstDigit = True; operateValidFlag = true; } private doble getNumberFromText () {double resultado = 0; intente {result = double.ValueOf (resultext.gettext ()). DoubleValue (); } catch (numberFormateException e) {} return resultado; } public static void main (string args []) {calculator calculate1 = new calculator (); calcular1.setVisible (verdadero); calculación1.setDefaultCloseOperation (jframe.exit_on_close); }}Efecto de ejecución:
PD: Aquí hay algunas herramientas de cálculo para que se consulte:
Herramienta de cálculo de la solución de la función unary (ecualización):
http://tools.vevb.com/jisuanqi/equ_jisuanqi
Calculadora científica en línea use_advanced calculadora en línea:
http://tools.vevb.com/jisuanqi/jsqkeexue
Calculadora en línea_standard Calculadora:
http://tools.vevb.com/jisuanqi/jsq
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.