¿Cómo escribir una calculadora usando eclipse?
Eclipse generalmente usa java swing como interfaz. Las funciones de la calculadora requieren algunas funciones de herramienta. Los ejemplos son los siguientes: import?javax.swing.*;
importar java. awt.*;
importar?java.awt. event.*;
¿pública?clase?Calculator?extends?JFrame?implements?ActionListener{
privada ?ActionListener{
privado?static?final?long?serialVersionUID=?8199443193151152362L;
privado?JButton?boto_s=new?JButton("sqrt"),boto_zf=new ?JButton ("+/-"),bto_ce=nuevo?JButton("CE"),bto_c= nuevo?JButton("C"),bto_7=nuevo?JButton("7"),
bto_8= nuevo?JButton("8"),bto_9=nuevo?JButton("9"),bto_chu=nuevo?JButton("/"),bto_4=nuevo?JButton("4"),bto_5=nuevo?JButton( "5 "),
bto_6=nuevo?JButton("6"),bto_cheng=nuevo?JButton("*"),bto_1=nuevo?JButton("1"),bto_2=nuevo?JButton (" 2"),bt_3=nuevo?JButton("3"),
bt_jian=nuevo?JButton("-"),bt_0=nuevo?JButton("0"),bt_dian=nuevo? JButton( "."") ,bto_deng=new?JButton("="),bto_jia=new?JButton("+");
JButton?button[]={bto_s,bto_zf,bto_ce,bto_c ,bto_7 ,bto_8,bto_9,bto_chu.
bto_0,bto_dian,bto_deng,bto_jia};
privado?JTextField?text_ double;//? =?new?JTextField("0 ") ;
private?String?operator?=?" =";?// Operador de la operación actual
private?boolean?firstDigit?=?true;?// ?Mark si el usuario presionó el primer dígito de la expresión completa o el primer dígito después del operador
private?double?resultNum?=?0.0;?//?El resultado intermedio del cálculo
private?boolean?operatingValidFlag?=?true;?// Determinar si la operación es legal
public?setResizable(false);
this.setBackground(Color .orange) ;
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().setLayout(new?BorderLayout());//Establecer diseño
text_double= ¿Nuevo? JTex
tField("0",20);//Establecer el área de texto
text_double.setHorizontalAlignment(JTextField.RIGHT);//establecer que la alineación horizontal no esté alineada a la derecha
esto. getContentPane ().add(text_double,BorderLayout.NORTH);//agregue el área de texto al norte de Contenido
JPanel?panel=new?JPanel(new?GridLayout(5,4));// es Agregar diseño de cuadrícula a la ventana de contenido
this.getContentPane().add(panel);//Agregar un panel al panel
for(int?i=0;i for(int?i=0;i panel.add(button[i]) for(int?i=0;i botón[i].addActionListener(this);//registrarse para el botón; p> text_double.setEdditable(false);//El cuadro de texto no es editable text_double.addActionListener(this); // this.setVisible(true); } public?void?actionPerformed(ActionEvent?e)// { String?c=?e. ();// Devuelve lo mismo que la cadena de comando asociada con esta operación. if(c.equals("C")){ handleC();//El usuario presionó la tecla "C" } p > else?if?(c.equals("CE"))//?El usuario presionó la tecla "CE" { text_double.setText(" 0" ); } else?if?("0123456789.".indexOf(c)? >=?0)?//?El usuario presiona la tecla numérica o tecla de punto decimal { handleNumber(c); ?//?handlezero(zero); }?else// El usuario presionó la tecla del operador { handleOperator(c); } } privado?void?handleC() //Inicialización Varios valores de la calculadora { text_double.setText("0"); firstDigit?=?true; p> operador?=?true" ="; } privado?void?handleNumber(String?button)?{ if( firstDigit)//primer número ingresado { text_double.setText(button); }?(text_double.getText().indexOf("." )) ? 0))//Si la entrada es un punto decimal y no hay un punto decimal precedente, agregue el punto decimal al cuadro de texto del resultado //Si el parámetro de cadena aparece como un subcadena en este objeto, devuelve el primer índice del primer carácter de dicha subcadena si no aparece como una subcadena, devuelve el índice del primer carácter de la primera subcadena; devuelve ? { text_double.setText(text_double.getText()?+?" .")) }?else?if?(!button .equals(". "))//Si el contenido de entrada no es un punto decimal, agregue el número al cuadro de texto del resultado { text_double.setText(text_double.getText ()?+?button); } // Este definitivamente no es el primer dígito que se ingresará más adelante firstDigit?=?false; } ¿privado?void?handleOperator(String?button)?{ if?(operator.equals("/"))?{ / Operación de división //Si el valor en el cuadro de texto del resultado actual es igual a 0 if?(getNumberFromText()? ==?0.0){ //La operación no es Legal operateValidFlag?=?false; text_double.setText("El divisor no puede ser cero"); }?else?{ resultNum?/=?getNumberFromText(); } } else?if?=?getNumberFromText(); } else?{ // Operación de raíz cuadrada if(getNumberFromText()<0){ operanV alidFlag?=?false; text_double.setText("El número a elevar al cuadrado no puede ser negativo."). ");} else resultNum?=?Math.sqrt(resultNum); } else?if?( operator.equals("+/-")){ Operaciones positivas y negativas resultNum?=?resultNum?*?(-1); } ?else?if(operador.equals("=")){