Red de conocimiento informático - Aprendizaje de programación - Programación Java...

Programación Java...

importar java.awt.*;

importar java.lang.*

importar javax.swing.*; javax.swing.event.*;

importar java.awt.event.*;

importar java.text.DecimalFormat

la clase pública Caculator implementa ActionListener; { //Importar interfaz de escucha de acciones

//Unidades en el panel de diseño

Marco JFrame

JTextField textAnswer

Panel JPanel; , panel1, panel2, panel3;

JMenuBar mainMenu;

JTextField textMemory;

JLabel labelMemSpace; //labelMemSpace es simplemente para decoración y controla la forma del panel

p>

JBotón botónBk, botónCe, botónC

JBotón botón[]

JBotón botónMC, botónMR, botónMS, botónMAd; p> JButton botonDot, botonAddAndSub, botonAdd, botonSub, botonMul,

botonDiv, botonMod

JButton botonSqrt, botonDao, botonEqual; helpMenu;

JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal

DecimalFormat df // Establece la precisión de salida de datos

booleano en el que se puede hacer clic; //Controlar la habilidad actual Sin clave

double Memoryd; //Usar números almacenados en la memoria

int Memoryi

double vard, respondido; para guardar datos dobles El valor intermedio (vard) y el resultado final (respuesta)

short key = -1, prekey = -1 // la clave se usa para guardar la operación actual y se usa la prekey; para guardar la operación anterior.

Copia de cadena; //Para copiar

Ayuda de JTextArea //Ayuda

JScrollPane scrollHelp; > //Función de construcción

public Caculator() {

clickable = true;

respondido = 0

frame = new JFrame; ("Calculadora ");

df = new DecimalFormat("0.##############"); //Establece la precisión de salida de datos (para valores dobles)

textAnswer = new JTextField(15);

textAnswer.setText("");

textAnswer.setEditable(false);

textAnswer.setBackground(nuevo color); (255, 255, 255));

panel = nuevo JPanel();

frame.getContentPane().add(panel)

panel1 = new JPanel();

panel2 = new JPanel();

panel.setLayout(new BorderLayout());

//Diseña todo el panel< / p>

mainMenu = nueva JMenuBar();

editMenu = nueva JMenu("Editar(E)");

viewMenu = nueva JMenu("Ver(V) " );

helpMenu = new JMenu("Ayuda(H)");

copyItem = new JMenuItem("Copiar(C) Ctrl+C");

copyItem.addActionListener(this);

pasteItem = new JMenuItem("Pegar(V) Ctrl+V");

pasteItem.addActionListener(this); >

editMenu.add(copyItem);

editMenu.add(pasteItem);

tItem = new JMenuItem("●Tipo estándar (T)"); >

tItem.addActionListener(this);

sItem = new JMenuItem(" Científico (S)");

sItem.addActionListener(this); p> numberGroup = new JMenuItem("Grupo de números (I)");

numberGroup.addActionListener(this);

viewMenu.add(tItem); > viewMenu.add(sItem);

viewMenu.add(numberGroup);

topHelp = new JMenuItem("Tema de ayuda(H)"); topHelp.addActionListener(this);

ayuda = new JTextArea(5, 20);

scrollHelp = new JScrollPane(ayuda

help.setEditable(); false);

help.append("Realizar un cálculo simple\n");

help.append("1. Escriba el primer número a calcular. \n");

help.append("2. Haga clic en "+" para realizar la suma, "-" para realizar la resta, "*" para realizar la multiplicación o "/" para realizar la división.

\n");

help.append("3. Escriba el siguiente número a calcular.\n");

help.append("4. Escriba todas las operaciones restantes caracteres y números. \n");

help.append("5. Haga clic en "=".

\n");

aboutCal = new JMenuItem(" Acerca de la Calculadora (A)");

aboutCal.addActionListener(this);

helpMenu. add (topHelp);

helpMenu.add(aboutCal);

mainMenu.add(editMenu);

mainMenu.add(viewMenu);

mainMenu.add(helpMenu);

panel.add(mainMenu, BorderLayout.NORTH);

panel.add(textAnswer, BorderLayout.CENTER);

panel.add(panel1, BorderLayout.SOUTH);

panel1.setLayout(new BorderLayout());

textMemory = nuevo JTextField(3);

textMemory.setEditable(false);

textMemory.setBackground(new Color(217, 217, 217));

labelMemSpace = new JLabel(" "); p>

botónBk = nuevo JButton("Retroceso");

botónBk.setForeground(nuevo Color(255, 0, 0));

botónCe = nuevo JButton( " CE");

botónCe.setForeground(nuevo Color(255, 0, 0));

botónC = nuevo JButton("C");

buttonC.setForeground(new Color(255, 0, 0));

buttonBk.addActionListener(this);

buttonCe.addActionListener(this); buttonC.addActionListener(this);

panel1.add(panel2, BorderLayout.NORTH);

panel2.setLayout(new FlowLayout(FlowLayout.RIGHT)); p> panel2.add(textMemory);

panel2.add(labelMemSpace);

panel2.add(buttonBk);

panel2.add(buttonCe ) ;

panel2.add(buttonC);

panel3 = nuevo JPanel();

panel1.add(panel3, BorderLayout.CENTER); >

p>

botón = nuevo JButton[10]

for (int i = 0; i < botón.longitud; i++) { <

/p>

botón[i] = new JButton(Integer.toString(i));

botón[i].setForeground(new Color(0, 0, 255)); >

}

botónMC = new JButton("MC");

botónMC.setForeground(nuevo Color(255, 0, 0)); > botónMR = nuevo JButton("MR");

botónMR.setForeground(nuevo Color(255, 0, 0));

botónMS = nuevo JButton("MS");

botónMS.setForeground(nuevo Color(255, 0, 0));

botónMAd = nuevo JButton("M+"); nuevo Color(255, 0, 0));

botónDot = nuevo JButton(".");

botónDot.setForeground(nuevo Color(0, 0, 255));

botónAddAndSub = new JButton("+/-");

botónAddAndSub.setForeground(nuevo Color(0, 0, 255));

botónAdd = nuevo JButton("+");

botónAdd.setForeground(nuevo Color(255, 0, 0));

botónSub = nuevo JButton("-"); >

botónSub.setForeground(nuevo Color(255, 0, 0));

botónMul = nuevo JButton("*");

botónMul.setForeground(nuevo Color( 255, 0, 0));

botónDiv = nuevo JButton("/");

botónDiv.setForeground(nuevo Color(255, 0, 0)); >

botónMod = nuevo JButton("%");

botónMod.setForeground(nuevo Color(0, 0, 255));

botónSqrt = nuevo JButton("sqrt) ");

buttonSqrt.setForeground(nuevo Color(0, 0, 255));

buttonDao = nuevo JButton("1/x");

buttonDao.setForeground(nuevo Color(0, 0, 255));

botónEqual = nuevo JButton("="

botónEqual.setForeground(nuevo Color(255, 0); , 0));

// Vincula todos los comportamientos a la escucha

panel3.setLayout(new GridLayout(4, 6));

panel3.add(buttonMC);

buttonMC.addActionListener(this); p>

p>

panel3.add(botón[7]);

botón[7].addActionListener(este

panel3.add(botón[); 8]);

botón[8].addActionListener(este);

panel3.add(botón[9]); addActionListener(este);

panel3.add(buttonDiv);

buttonDiv.addActionListener(este);

panel3.add(buttonSqrt); >

botónSqrt .addActionListener(este);

panel3.add(botónMR);

botónMR.addActionListener(este);

panel3.add( botón[4]) ;

botón[4].addActionListener(este);

panel3.add(botón[5]); ].addActionListener(este) );

panel3.add(botón[6]);

botón[6].addActionListener(este

panel3); .add(buttonMul);

buttonMul.addActionListener(this);

panel3.add(buttonMod);

buttonMod.addActionListener(this); p>

panel3 .add(botónMS);

botónMS.addActionListener(este);

panel3.add(botón[1]); botón[1].addActionListener (este);

panel3.add(botón[2]

botón[2].addActionListener(este); > panel3.add(botón [3]);

botón[3].addActionListener(este);

panel3.add(botónSub); .addActionListener(this);

panel3.add(buttonDao);

buttonDao.addActionListener(this);

panel3.add(buttonMAdd); p>

botónMAd .addActionListener(this);

panel3.add(botón[0]);

botón[0].addActionListener(this);

panel3.add(botónAddAndSub); addActionListener(this);

panel3.add(buttonDot);

buttonDot.addActionListener(this);

panel3.add(buttonAdd); >

buttonAdd.addActionListener(este);

panel3.add(buttonEqual);

buttonEqual.addActionListener(este);

frame.setDefaultCloseOperation( frame.EXIT_ON_CLOSE);

frame.pack();

frame.show();

}

//Establecer cada uno Comportamiento del botón

public void actionPerformed(ActionEvent event) {

boolean sign = false //Determina si hay un número doble involucrado en la operación, si es verdadero o no

p >

Object temp = event.getSource();

try {

// Si se presiona el botón de datos, inserte los datos representados por el botón presionado en el actual cuadro de texto después de la cadena

for (int i = 0; i <= 9; i++)

if (temp == botón[i] && clickable == true)

textAnswer.setText(textAnswer.getText() + Integer.toString(i));

//Cuando se presiona el botón '.' ' .', si ya está incluido, no se permite insertar '.'

if (temp == buttonDot && clickable == true) {

boolean isDot = false ;

if (textAnswer.getText().length() == 0)

isDot = true

for (int i = 0; i <; textAnswer.getText( ).length(); i++)

if ('.' == textAnswer.getText().charAt(i)) {

isDot = true; /p>

break;

}

if (isDot == false)

textAnswer.setText(textAnswer.getText() + "."

p>

}

if ((temp == botónAgregar || temp == botones);

ub || temp == botónMul || temp == botónDiv) && clicable == verdadero) {

//'+' operación

if (temp == botónAgregar) {

switch (prekey) {

caso 0:

respondido += Double.parseDouble(textAnswer.getText());

break ;

caso 1:

respondido -= Double.parseDouble(textAnswer.getText());

break

caso 2; :

respondido *= Double.parseDouble(textAnswer.getText());

break

caso 3:

if ( Double.parseDouble(textAnswer.getText()) == 0) {

textAnswer.setText("El divisor no puede ser cero");

clickable = false

}

else

respondido /= Double.parseDouble(textAnswer.getText());

break

default; :

respondido = Double.parseDouble(textAnswer.getText();

}

textAnswer.setText(""); > prekey = clave = 0;

}

//'-' operación

if (temp == buttonSub) {

switch (prekey) {

caso 0:

respondido += Double.parseDouble(textAnswer.getText());

break; p > caso 1:

respondido -= Double.parseDouble(textAnswer.getText());

break

caso 2:

respondido *= Double.parseDouble(textAnswer.getText());

break;

caso 3:

if (Double.parseDouble(textAnswer. getText ()) == 0) {

textAnswer.setText("El divisor no puede ser cero");

> clicable = falso;

}

else

respondido /= Double.parseDouble(textAnswer.getText());

predeterminado:

respondido = Double.parseDouble(textAnswer.getText());

}

textAnswer.setText(" ");

prekey = clave = 1;

}

//'*' operación

if (temp == botónMul ) {

switch (prekey) {

caso 0:

respondido += Double.parseDouble(textAnswer.getText()); p> romper;

caso 1:

respondido -= Double.parseDouble(textAnswer.getText());

romper; > caso 2:

respondido *= Double.parseDouble(textAnswer.getText());

break;

caso 3:

> if (Double.parseDouble(textAnswer.getText()) == 0) {

textAnswer.setText("El divisor no puede ser cero");

clickable = false; /p> p>

}

else

respondido /= Double.parseDouble(textAnswer.getText());

break; >

predeterminado:

respondido = Double.parseDouble(textAnswer.getText()

}

textAnswer.setText(""); /p>

prekey = clave = 2;

}

//'/' operación

if (temp == buttonDiv) {

switch (prekey) {

caso 0:

respondido += Double.parseDouble(textAnswer.getText());

break;

caso 1:

respondido -= Double.parseDouble(textAnswer.getText());

romper;

caso 2:

respondido *= Double.parseDouble(textAnswer.getText());

romper

caso; 3:

if (Double.parseDouble(textAnswer.getText()) == 0) {

textAnswer.setText("El divisor no puede ser cero");

clicable = false

}

else

respondido /= Double.parseDouble(textAnswer.getText()); > romper;

predeterminado:

respondido = Double.parseDouble(textAnswer.getText());

}

textAnswer.setText ( "");

prekey = clave = 3

}

}

//'='operación

if (temp == buttonEqual && clickable == true) {

//Si presionas '=" continuamente, realiza operaciones continuas

if (prekey == 5 ) {

if (key == 0) {

respondido += vard

textAnswer.setText(df.format(answerd)

p >

}

if (clave == 1) {

respondido -= vard

textAnswer.setText(df.format(answerd) ) ;

}

if (clave == 2) {

respondido *= vard; formato (respuesta));

}

if (clave == 3) {

if (Double.parseDouble(textAnswer.getText()) == 0 ) {

textAnswer.setText("El divisor no puede ser cero");

clickable = false

}

else; {

respondido /= vard;

textAnswer.setText(df.format(answerd));

}

}

}

else {

vard = Doble.p

arseDouble(textAnswer.getText());

if (clave == 0) {

prekey = -1;

respondido += Double.parseDouble( textAnswer.getText());

textAnswer.setText(df.format(answerd));

}

if (clave == 1) {

prekey = -1;

respondido -= Double.parseDouble(textAnswer.getText());

textAnswer.setText(df.format(answerd)); ;

}

if (clave == 2) {

prekey = -1;

respondido *= Double.parseDouble( textAnswer.getText());

textAnswer.setText(df.format(answerd));

}

if (clave == 3) {

prekey = -1;

if (Double.parseDouble(textAnswer.getText()) == 0) {

textAnswer.setText("El divisor no puede ser cero");

clicable = false;

}

else {

respondido /= Double.parseDouble(textAnswer.getText ( ));

textAnswer.setText(df.format(respuesta));

}

}

}

prekey = 5;

}

//'%' operación, divide el segundo operando por 100

if (temp == buttonMod && se puede hacer clic == verdadero) {

if (respuesta == 0) {

String s = textAnswer.getText()

textAnswer.setText( s) ;

}

else {

booleano isDot = false

for (int i = 0; i < textAnswer. getText( ).length(); i++)

if ('.' == textAnswer.getText().charAt(i)) {

isDot = true; p> romper;

}

//

Si es un número doble, divida por 100

if (isDot == true) {

double dtemp = Double.parseDouble(textAnswer.getText()

);

dtemp = dtemp / 100.0;

textAnswer.setText(Double.toString(dtemp));

}

else {

//Si es un número int pero es divisible por 100, elimina los dos últimos ceros

if (Integer.parseInt(textAnswer.getText()) % 100 == 0) {

int itemp = Integer.parseInt(textAnswer.getText());

itemp /= 100

textAnswer.setText(Integer.toString(itemp)); /p>

}

//Si es un número int, pero no es divisible por 100, será tratado como un número doble

else {

doble dtemp = Double.parseDouble (textAnswer.getText());

dtemp = dtemp / 100.0

textAnswer.setText(Double.toString(dtemp))

}

p>

}

}

}

// Operación raíz

if (temp == buttonSqrt && clickable == true) {

String s = textAnswer.getText()

if (s.charAt(0); ) == '-') {

textAnswer.setText("Los números negativos no pueden abrir el signo raíz");

clickable = false

}

else

textAnswer.setText (Double.toString(java.lang.Math.sqrt(Double.parseDouble(textAnswer.getText()))))

> }

//Operación recíproca

if (temp == buttonDao && clickable == true) {

if (textAnswer.getText().charAt( 0) == '0' && textAnswer.getText().length() == 1) {

textAnswer.setText("El cero no puede ser correspondido"); falso;

}

más {

bo

olean isDec = true;

int i, j, k;

String s = Double.toString(1 / Double.parseDouble(textAnswer.getText())); >

for (i = 0; i < s.length(); i++)

if (s.charAt(i) == '.')

break;

for (j = i + 1; j < s.length(); j++)

if (s.charAt(j) != '0') {

isDec = false;

romper

}

if (isDec == verdadero) {

String stemp = "";

for (k = 0; k < i; k++)

stemp += s.charAt(k);

textAnswer.setText( stemp);

}

else

textAnswer.setText(s); /p>

//Procesado cuando se presiona el botón '+/-'

if (temp == buttonAddAndSub && clickable == true) {

boolean isNumber = true

Cadena s = textAnswer.getText();

for (int i = 0; i < s.length(); i++)

if ( ! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || s.charAt(i) == '- ' )) {

isNumber = false

break

}

if (isNumber == true) {

//Si la primera letra de la cadena actual tiene un símbolo '-', significa que es un número negativo. Cuando se presiona nuevamente, el primer símbolo se eliminará

si (s). .charAt(0) == ' -') {

textAnswer.setText(""

for (int i = 1; i < s.length(); i++); ) {

char a = s.charAt(i);

textAnswer.setText(textAnswer.getText() + a

}

}

//Si el primer carácter de la cadena actual no es un símbolo, agregue un símbolo en la primera letra

else

textAnswer .setTex

t('-' + s);

}

}

//Operaciones de memoria relacionadas con la calculadora

//'MC ' operación, borre la memoria a 0

if (temp == buttonMC && clickable == true) {

Memoryd = Memoryi =

textMemory. ("");

}

// operación 'MS', guarda el contenido del cuadro de texto actual en la memoria y muestra 'M'

if (temp). == botónMS && en el que se puede hacer clic == verdadero) {

booleano isDot = false

textMemory.setText(" M"); 0; i < textAnswer.getText().length(); i++)

if ('.' == textAnswer.getText().charAt(i)) {

isDot = true;

break;

}

//Si es un doble, guárdalo en memoriad (memoria doble)

if (isDot == true) {

memoriad = Double.parseDouble(textAnswer.getText());

memoriai = 0; // Asegúrese de que el último valor esté almacenado en el; memoria

}

// Si es int, guárdalo en memoriai (memoria int)

else {

memoriai = Entero .parseInt(textAnswer .getText());

Memoryd = 0; //Asegúrese de que el último valor esté almacenado en la memoria

}

}

/ /Operación 'MR', genera la información en la memoria

if (temp == buttonMR && clickable == true) {

if (memoryd!= 0)

textAnswer.setText(Double.toString(memoryd));

if (memoryi != 0)

textAnswer.setText(Integer.toString( memoriai));

}

// La función 'M+' agrega los datos del cuadro de texto actual a los datos en la memoria y luego los almacena en la memoria

if ( temp == buttonMAd && clickable == true) {

boolean isDot = false

for (int i = 0; i < textAnswer.getText(); .length(); i++ )

if ('.' == textAnswer.getT

text().charAt(i)) {

isDot = true;

break

}

if (memoryi != 0) { //El almacenamiento es un número de tipo int

if (isDot == false) //El resumen es un número de tipo int

memoriai += Integer.parseInt( textAnswer .getText());

else { //El sumando es un número doble, luego el número en la memoria int se transfiere a la memoria doble y se suma al número actual, y la memoria int se borra.

memoriad = memoriai + Double.parseDouble(textAnswer.getText());

memoriai = 0

}

} <; /p>

else

memoriad += Double.parseDouble(textAnswer.getText());

}

//Presiona 'Retroceso' tecla para usar Loop para eliminar la última letra de la cadena actual

if (temp == buttonBk && clickable == true) {

String s = textAnswer.getText(); /p >

textAnswer.setText("");

for (int i = 0; i < s.length() - 1; i++) {

char a = s .charAt(i);

textAnswer.setText(textAnswer.getText() + a

}

}

/ /Presione el botón 'CE' para borrar los datos en el cuadro de texto actual

if (temp == buttonCe) {

textAnswer.setText(""); p>

clickable = true;

}

//Presione el botón 'C', los datos en el cuadro de texto se borran y var, la respuesta se borra a 0.

if (temp == botónC) {

vard = respondido = 0

textAnswer.setText(""); clickable = true;

}

//Presione la barra de menú 'Copiar'

if (temp == copyItem) {

copiar = textAnswer.getText();

}

//Presiona la barra de menú 'Pegar'

if (temp == pasteItem) {

textAnswer.setText( copiar);

}

if (temp == sItem) {

JOptionPane.showMessageDialo

g(panel, "Actualmente es una calculadora estándar,\nLa calculadora científica debe actualizarse."

}

//Haga clic en la barra de menú 'Tema de ayuda'<); /p>

if (temp == topHelp) {

JOptionPane.showMessageDialog(panel, scrollHelp);

}

//Presione el número; barra de menú del grupo

if (temp == numberGroup) {

if (numberGroup.getText().compareTo("Number Group (I)") == 0) < / p>

numberGroup.setText("√Número Grupo(I)");

else

numberGroup.setText("Número Grupo(I)"); >

else

numberGroup.setText("Grupo de números(I)");

p>

}

//Presione ' Barra de menú Acerca de

if (temp == aboutCal) {

JOptionPane.showMessageDialog(panel, "Calculadora versión 1.00\nDesarrollador: Lou Jing"

}

} catch (Exception e) { //Si hay una operación ilegal en la entrada, como presionar dos veces '+', captura la excepción

textAnswer.setText( "Operación ilegal");

clickable = false

}

}

//Función principal

public static void main(String args[]) {

new Caculator()

}

}