Red de conocimiento informático - Espacio del host - 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.

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;

}

}

}

}