Escribí la calculadora en Java, pero no podía manejar el monitoreo. Era demasiado problemático configurar un monitoreo para cada cadena, así que usé una matriz. Después de cambiarla, me aseguré de agregarla.
paquete jisuanqi_new
importar java.awt.*;
importar java.awt.event.*
clase pública JiSuanQi_new; implementa ActionListener
{
Panel p1 //Declarar panel p1
TextField t1 //Declarar línea de texto t1
String[ ] etiqueta = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "- ", "0", ".", "=", " "}; //Declarar la matriz de etiquetas label1 para almacenar las etiquetas en los botones
Botón[] b; //Declarar la matriz de botones para almacenar 16 botones
private int i; //Declarar i para uso posterior
private String op1 = "0" //Operaciones para uso posterior
operador de cadena privada = " ";//Copia de seguridad del operador
append booleano privado = false; //Copia de seguridad
public JiSuanQi_new()//Método de construcción
{
t1=new TextField(); //Inicializa la línea de texto t1
b = new Button[label.length] //Inicializa la matriz de botones b
p1=new Panel(); //Inicializa el panel p1
p1.setLayout(new GridLayout(4, 4, 4, 4)); //Habilita el panel para seleccionar el administrador de diseño de cuadrícula para almacenar 16 botones (4 filas y 4 columnas)
for(int i=0; ilt; b.length; i)//Utilice un bucle for para colocar la etiqueta en el botón, de modo que cada botón pueda agregar un detector de eventos para el panel Agregue 16 botones a p1
{
b[i] = new Button(label[i] //Coloque etiquetas en los 16 botones en secuencia);
b[i].addActionListener(this); //Agrega un detector de eventos de acción a cada botón
p1.add(b[i]); panel respectivamente p1 en
}
Frame f=new Frame("Calculator 1.0"); //Inicializa la ventana f y nombra Calculator 1.0
f. (new BorderLayout()); //Selecciona un administrador de diseño de bordes para la ventana
f.add(BorderLayout.NORTH, t1 //Agrega la línea de texto al norte de la ventana
f.add(BorderLayout.CENTER, p1); //Agregar barra de fideos p1 al centro de la ventana
f.addWindowListener(new WindowAdapter(){//Agregar detector de eventos de ventana a ventana f
ventana vacía públicaClosing(WindowEvent eve){//Ejecutar cierre de ventana
Método de cierre
System.exit(0); //Salir del programa
}
});
f.setSize( 250, 250); //Establecer el tamaño de la ventana
f.setLocation(200, 200);
f.setVisible(true); //Mostrar la ventana
}
public static void main(String args[])
{
new JiSuanQi_new() //Llamar al constructor
}
public void actionPerformed(ActionEvent ae)
{//Se opera el botón
String comm = ae.getActionCommand(); Devuelve esta cadena de comando relacionada con la acción, es decir: en qué botón hizo clic el usuario por primera vez.
if("0123456789".indexOf(comm)!=-1)//Si la cadena de comando relevante es un número entre 0 y 9, ejecútela
{
if(append){
String temp = t1.getText(); //Nuevo número
t1.setText(temp comm);
}else{ //Ejecuta esto porque append es falso en este momento
t1.setText(comm); //Establece la línea de texto t1 en la cadena de comando relevante (el código del botón que presionaste)
p>append = true; //Append=true en este momento, si continúa presionando el botón, si continúa presionando el número, 1. La primera pulsación no cambiará 2. Si no es el Al presionar por primera vez, se sobrescribirá la presión anterior. Números (desventaja: solo se pueden calcular números individuales)
}
}
else if((" - */".indexOf(comm) !=-1))//Si la cadena de comando relevante es un número entre -*/, ejecútela
{
//Guardar
// t1.setText(comm);
op1 = t1.getText(); //Asigna el primer número a op1
operator = comm; /Asignar cadena de comando Dar operador
append = false; // Agregar es falso en este momento, es decir, si continúa presionando el botón o presiona el número, se repetirá la acción anterior y si presiona el símbolo, se sobrescribirá el símbolo anterior
}
else if("=".equals(comm))//Si presiona el signo =, realice la siguientes operaciones según las condiciones
{
String op2 = t1.getText(); // El segundo número de op2
double d1 = Double.parseDouble (op1);
doble d2 = Double.parseDouble(op2) ;
if(operator.equals(" ")){
d1 = d1 d2 ;
}else if(operador.equals("-") ){
d1 = d1 - d2
}else if(operador.equals( "*")){
d1 = d1 * d2;
}si no {
d1 = d1 / d2
}
t1.setText(d1 ""); // Mostrar resultado del cálculo
append = false;
}
<p> else if(".".equals(comm))//Si es ., continúa presionando
{
String temp = t1.getText();
if(temp.indexOf(".")==-1){
t1.setText(temp ".");
append = true; p>
}
}
}
}