Calculadora Java
Calculadora Java
Calculadora Java
ScriptException; public class Calculadora extends JFrame implements ActionListener { JPanel panel1= new JPanel(); JPanel panel2= new JPanel(); JTextField texto, campoTexto1, campoTexto2; String resultado; String formula=""; int a=0; public Calculadora() { setDefaultCloseOperation(this.EXIT_ON_CLOSE); Container contenedor = getContentPane(); panel1.setLayout( new GridLayout(2,2) ); texto= new JTextField( "operacion" ); texto.setEditable( false ); panel1.add(texto); campoTexto1= new JTextField(10); campoTexto1.setEditable( false ); panel1.add( campoTexto1); texto= new JTextField( "Resultado" ); texto.setEditable(false); panel1.add(texto); campoTexto2= new JTextField(10); campoTexto2.setEditable( false ); panel1.add( campoTexto2);
contenedor.add(panel1,"North" ); panel2.setLayout(new FlowLayout()); for(int i=0; i<10; i++) { JButton boton= new JButton(""+i); boton.addActionListener(this); panel2.add(boton); } JButton botonSumar= new JButton("+" ); botonSumar.addActionListener(this); panel2.add(botonSumar);
JButton botonRestar= new JButton("-" ); botonRestar.addActionListener(this); panel2.add(botonRestar); JButton botonMultiplicar= new JButton("*" ); botonMultiplicar.addActionListener(this); panel2.add(botonMultiplicar); JButton botonDividir= new JButton("/" ); botonDividir.addActionListener(this); panel2.add(botonDividir); JButton botonIgual= new JButton("=" ); botonIgual.addActionListener(this); panel2.add(botonIgual); JButton botonLimpiar = new JButton("Limpiar" ); botonLimpiar.addActionListener(this); panel2.add(botonLimpiar); contenedor.add(panel2,"Center" ); setSize(450, 140); setVisible(true); }
public void actionPerformed(ActionEvent evento) { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js" );
if((evento.getActionCommand()).equals("=" )) {
try { resultado= ""+engine.eval(formula); if(!(resultado.equals("null" ))) { if(resultado.equals("Infinity" )||resultado.equals("NaN" )) { setFormula(formula); setResultado("Math Error" ); } else { setFormula(formula); setResultado(""+resultado); } } formula=""; } catch(ScriptException se) { formula=""; setResultado("Syntax Error " ); } a=1; } }
Cientifica // Iniciamos <img src="http://www.comoprogramar.org/wpincludes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley"> 2 public class Calculadora { 3 public static int Suma(int[] sumandos){ 4 int suma = 0; 5 6 7 8 for(int i = 0; i < sumandos.length; i++){ suma += sumandos[i]; } return suma;
9 } 10 public static int Resta(int[] elementos){ 11 12 13 14 int resta = 0; for(int i = 0; i < elementos.length; i++){ resta -= elementos[i]; }
15 return resta; 16 } 17 public static float Division(int m, int n){ 18 19 20 21 } 22 public static double Multiplicacion(double[] factores){ 23 24 25 26 double producto = 1; for(int i = 0; i < factores.length; i++){ producto *= factores[i]; } return m/n;
27 return producto; 28 } 29 public static int Factorial(int num){ 30 int factorial = 1; 31 32 33 34 35 } 36 } for(int i = 1; i <= num; i++){ factorial *= i; } return factorial;
Es algo muy trivial la verdad, se entiende todo claramente, es meramente algo para practicar cosas bsicas. Ahora veamos el resto del programa, la clase que contiene el mtodo main
// Importamos la clase Math <img src="http://www.comoprogramar.org/wpincludes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley"> 2 import java.lang.Math; 1 3 import java.util.Scanner; 4 import java.io.*;
5 /* 6 * @author Kedinn 7 8 * 9 */ 10 public class app { 11 12 /* 13 14 15 16 17 18 public static Scanner text1 = new Scanner(System.in); 19 20 public static int[] Operacion() 21 { 22 int number, aux, cont = 1; 23 24 25 26 27 28 29 30 31 32 33 34 } System.out.println("Cuantos numeros usara para esta operacion? "); String s = text1.next(); number = Integer.parseInt(s); int valores[] = new int[number]; System.out.println("Ok. Usaremos " + number + " numeros!"); for(int i = 0; i < number; i++){ System.out.println("Numero " + cont + ": "); s = text1.next(); aux = Integer.parseInt(s); valores[i] = aux; cont++; * * @param args * */
35 return valores; 36 } 37 38 public static double[] Operacion2(){ 39 40 41 42 43 44 45 46 47 48 49 50 int number; int aux; int cont = 1; System.out.println("Cuantos numeros usara para esta operacion? "); String s = text1.next(); number = Integer.parseInt(s); double valores[] = new double[number]; System.out.println("Ok. Usaremos " + number + " numeros!"); for(int i = 0; i < number; i++){ System.out.println("Numero " + cont + ": "); s = text1.next(); aux = Integer.parseInt(s);
51 52 53 54 55 } 56
57 public static void main(String[] args) throws IOException 58 { 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 byte opt = 0; int[] vector; double[] vector2; int resultado, op1, op2, num; float cociente; do{ System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); System.out.println("$$$ $$$"); System.out.println("$$$ System.out.println("$$$ Calculadora basica en Java v.:1.0 $$$"); $$$");
System.out.println("$$$ $$$"); System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); System.out.println("$$$ $$$"); System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ System.out.println("$$$ __== MENU ==_ 1. Suma 2. Resta 3. Multiplicacion 4. Division 5. Factorial 6. Potenciacion 7. Raiz cuadrada 8. Logaritmo neperiano 9. Convertir grados a radianes 10. Salir $$$"); $$$"); $$$"); $$$"); $$$"); $$$"); $$$"); $$$"); $$$"); $$$"); $$$"); $$$");
System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"); System.out.println("Introduzca la opcion de la operacion a realizar: "); String s = text1.next(); opt = (byte) Integer.parseInt(s); switch(opt){ case 1: vector = Operacion(); resultado = Calculadora.Suma(vector); System.out.println("La suma de los valores introducidos es: " + resultado); System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break;
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
case 2: vector = Operacion(); resultado = Calculadora.Resta(vector); System.out.println("El resultado de la resta es: " + resultado); System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break; case 3: vector2 = Operacion2(); resultado = (int) Calculadora.Multiplicacion(vector2); System.out.println("El producto de la esta multiplicacion es: " + resultado); System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break; case 4: System.out.println("Introduzca el numerador: "); s = text1.next(); op1 = Integer.parseInt(s); System.out.println("Ahora introduzca el denominador: "); s = text1.next(); op2 = Integer.parseInt(s); cociente = Calculadora.Division(op1, op2); System.out.println("El cociente de la division es: " + cociente); System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break; case 5: System.out.println("Introduzca el numero: "); s = text1.next(); num = Integer.parseInt(s); resultado = Calculadora.Factorial(num); System.out.println("El factorial de " + num + " es: " + resultado); System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break; case 6: System.out.println("Escriba la base: "); s = text1.next(); op1 = Integer.parseInt(s); System.out.println("Introduzca el exponente: "); s = text1.next(); op2 = Integer.parseInt(s); System.out.println("El resultado es: " + Math.pow(op1, op2));
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break; case 7: System.out.println("Introduzca el numero: "); s = text1.next(); num =Integer.parseInt(s); System.out.println("La raiz cuadrada del numero " + num + " es: " + Math.sqrt(num)); System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break; case 8: System.out.println("Introduzca el numero: "); s = text1.next();
num = Integer.parseInt(s); System.out.println("El logaritmo neperiana del numero " + num + " es: " + 162 Math.log(num)); 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 18 } }while(opt != 10); System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break; case 9: System.out.println("Introduzca el numero: "); s = text1.next(); num = Integer.parseInt(s); System.out.println("El numero " + num + " en radianes es: " + Math.toRadians(num)); System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break; case 10: System.out.println("Has decidido salir! Adios!"); continue; default: System.out.println("Opcion no valida!!!!!"); System.out.println("Presiona una tecla para continuar..."); // Esperamos a que el usuario presione una tecla para seguir.. System.in.read(); break;
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/** * By Francho Joven - http://francho.org/lab/ * * This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3. Unported License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ * or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, Califo 94105, USA. * */ package org.francho.java.calculadora; /** * Ejercicio: Calculadora sencilla - Implementar la Interfaz de usuario * Implementar los mtodos siguientes a travs de los listeners adecuados: * Sumar - Restar - Multiplicar - Dividir * * @author: $Author: franchux $ * @version: $Rev: 70 $ * @date: $Date: 2009-04-13 13:06:00 +0200 (lun 13 de abr de 2009) $ $Id: * Main.java 70 2009-04-13 11:06:00Z franchux $ */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { VentanaCalculadora calculadora = new VentanaCalculadora(); calculadora.setVisible(true); } }
VentanaCalculadora.java
/** * By Francho Joven - http://francho.org/lab/ * * This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3 Unported License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ * or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, Calif 94105, USA. * */ package org.francho.java.calculadora; import import import import import import java.awt.BorderLayout; java.awt.Color; java.awt.Font; java.awt.GridLayout; java.awt.event.MouseAdapter; java.awt.event.MouseEvent;
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
/** * * Interfaz para nuestra calculadora sencilla * * @author: $Author: franchux $ * @version: $Rev: 75 $ * @date: $Date: 2009-04-14 00:21:18 +0200 (mar 14 de abr de 2009) $ $Id: * VentanaCalculadora.java 75 2009-04-13 22:21:18Z franchux $ */ public class VentanaCalculadora extends JFrame { /** * generado */ private static final long serialVersionUID = 1583724102189855698L; /** numero tecleado */ JTextField pantalla; /** guarda el resultado de la operacion anterior o el nmero tecleado */ double resultado; /** para guardar la operacion a realizar */ String operacion; /** Los paneles donde colocaremos los botones */ JPanel panelNumeros, panelOperaciones; /** Indica si estamos iniciando o no una operacin */ boolean nuevaOperacion = true; /** * Constructor. Crea los botones y componentes de la calculadora */ public VentanaCalculadora() { super(); setSize(250, 300); setTitle("Calculadora Simple"); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setResizable(false); // Vamos a dibujar sobre el panel JPanel panel = (JPanel) this.getContentPane(); panel.setLayout(new BorderLayout()); pantalla = new JTextField("0", 20); pantalla.setBorder(new EmptyBorder(4, 4, 4, 4)); pantalla.setFont(new Font("Arial", Font.BOLD, 25)); pantalla.setHorizontalAlignment(JTextField.RIGHT); pantalla.setEditable(false); pantalla.setBackground(Color.WHITE); panel.add("North", pantalla);
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
panelNumeros = new JPanel(); panelNumeros.setLayout(new GridLayout(4, 3)); panelNumeros.setBorder(new EmptyBorder(4, 4, 4, 4)); for (int n = 9; n >= 0; n--) { nuevoBotonNumerico("" + n); } nuevoBotonNumerico("."); panel.add("Center", panelNumeros); panelOperaciones = new JPanel(); panelOperaciones.setLayout(new GridLayout(6, 1)); panelOperaciones.setBorder(new EmptyBorder(4, 4, 4, 4)); nuevoBotonOperacion("+"); nuevoBotonOperacion("-"); nuevoBotonOperacion("*"); nuevoBotonOperacion("/"); nuevoBotonOperacion("="); nuevoBotonOperacion("CE"); panel.add("East", panelOperaciones); validate(); } /** * Crea un boton del teclado numrico y enlaza sus eventos con el listener * correspondiente * * @param digito * boton a crear */ private void nuevoBotonNumerico(String digito) { JButton btn = new JButton(); btn.setText(digito); btn.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent evt) { JButton btn = (JButton) evt.getSource(); numeroPulsado(btn.getText()); } }); panelNumeros.add(btn); } /** * Crea un botn de operacion y lo enlaza con sus eventos. * * @param operacion */ private void nuevoBotonOperacion(String operacion) { JButton btn = new JButton(operacion); btn.setForeground(Color.RED);
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
btn.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent evt) { JButton btn = (JButton) evt.getSource(); operacionPulsado(btn.getText()); } }); panelOperaciones.add(btn); } /** * Gestiona las pulsaciones de teclas numricas * * @param digito * tecla pulsada */ private void numeroPulsado(String digito) { if (pantalla.getText().equals("0") || nuevaOperacion) { pantalla.setText(digito); } else { pantalla.setText(pantalla.getText() + digito); } nuevaOperacion = false; } /** * Gestiona el gestiona las pulsaciones de teclas de operacin * * @param tecla */ private void operacionPulsado(String tecla) { if (tecla.equals("=")) { calcularResultado(); } else if (tecla.equals("CE")) { resultado = 0; pantalla.setText(""); nuevaOperacion = true; } else { operacion = tecla; if ((resultado > 0) && !nuevaOperacion) { calcularResultado(); } else { resultado = new Double(pantalla.getText()); } } nuevaOperacion = true; } /** * Calcula el resultado y lo muestra por pantalla */ private void calcularResultado() { if (operacion.equals("+")) { resultado += new Double(pantalla.getText()); } else if (operacion.equals("-")) { resultado -= new Double(pantalla.getText()); } else if (operacion.equals("/")) { resultado /= new Double(pantalla.getText()); } else if (operacion.equals("*")) {
172 173 174 175 176 17 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
Es una calculadora con las 4 operaciones fundamentales esta realizada en java con el IDE Netbeans 6.8, en el archivo se encuentra todo el cdigo y adems un ejecutable de la calculadora
Calculadora asis = new Calculadora(); add(asis); setResizable(false); setVisible(true); } public static void main(String[] arguments) { MarcoCalculadora calculadora = new MarcoCalculadora(); } } class Calculadora extends JPanel implements ActionListener{ //creamos las variables de clase que necesitamos para guardar //los valores double num1,num2,memo,total; char oper; //creamos los botones que van formar parte de nuestro marco o ventana //de la calculadora //botones de operaciones JLabel lb1=new JLabel("Digite aqu los numeros: "); JLabel lb2=new JLabel(""); JTextField txt1=new JTextField("",15); JButton sum=new JButton("+"); JButton res=new JButton("-"); JButton mul=new JButton("*"); JButton div=new JButton("/"); JButton igual=new JButton("="); JButton borrarActual=new JButton("CE"); JButton borrar=new JButton("C"); JButton mod=new JButton("%"); //los botones con los numeros JButton punto=new JButton("."); JButton n0=new JButton("0"); JButton n1=new JButton("1"); JButton n2=new JButton("2"); JButton n3=new JButton("3"); JButton n4=new JButton("4"); JButton n5=new JButton("5"); JButton n6=new JButton("6"); JButton n7=new JButton("7"); JButton n8=new JButton("8"); JButton n9=new JButton("9"); public Calculadora() { //constructor de la clase Calculadora //creamos un panel para mostrar la etiqueta con el campo de //introduccin de texto JPanel p1=new JPanel(); p1.add(lb1); p1.add(txt1); //creamos otro panel para mostrar los botones de las operaciones JPanel p2=new JPanel();
p2.setBorder(BorderFactory.createTitledBorder(null, "Operaciones", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog",Font.BOLD, 12), new Color(51, 51, 51))); p2.add(sum); p2.add(res); p2.add(mul); p2.add(div); p2.add(igual); //agregamos el evento ActionListener a cada uno de los botones //en este caso el evento es el de presionar un botn sum.addActionListener(this); res.addActionListener(this); mul.addActionListener(this); div.addActionListener(this); igual.addActionListener(this); //creamos otro panel para mostrar los botones de los numeros y //los botones de borrar JPanel p3=new JPanel(); p3.setLayout(new GridLayout(5,3)); p3.add(lb2); p3.add(borrar); p3.add(borrarActual); p3.add(n7); p3.add(n8); p3.add(n9); p3.add(n4); p3.add(n5); p3.add(n6); p3.add(n1); p3.add(n2); p3.add(n3); p3.add(punto); p3.add(n0); p3.add(mod); //agregamos el evento ActionListener a cada uno de los botones n7.addActionListener(this); n8.addActionListener(this); n9.addActionListener(this); n4.addActionListener(this); n5.addActionListener(this); n6.addActionListener(this); n1.addActionListener(this); n2.addActionListener(this); n3.addActionListener(this); punto.addActionListener(this); n0.addActionListener(this); borrarActual.addActionListener(this); borrar.addActionListener(this); mod.addActionListener(this); //creamos el gestor de diseo que nos permitira ordenar los paneles //en este caso use el gestor de diseo GridLayout que me muestra los //paneles en forma de filas y columnas GridLayout grid=new GridLayout(3,1,5,5); setLayout(grid); add(p1);
add(p3); add(p2); } //metodo de la Interface ActionListener que nos permite //manejar el evento de presionar un botn public void actionPerformed(ActionEvent evt) { try{ //creamos un objeto que nos permite manejar este evento //le agregamos a la variable el metodo getSource //que significa que esta va a manejar dicho evento Object fuente = evt.getSource(); String datos=txt1.getText();//esta variable recupera lo del JTextField //validamos el botn que el usuario presiono if (fuente == n0) { txt1.setText(""); txt1.setText(""+datos+n0.getText()); } else if (fuente == n1) { txt1.setText(""); txt1.setText(""+datos+n1.getText()); }else if (fuente == n2) { txt1.setText(""); txt1.setText(""+datos+n2.getText()); }else if (fuente == n3) { txt1.setText(""); txt1.setText(""+datos+n3.getText()); }else if (fuente == n4) { txt1.setText(""); txt1.setText(""+datos+n4.getText()); }else if (fuente == n5) { txt1.setText(""); txt1.setText(""+datos+n5.getText()); }else if (fuente == n6) { txt1.setText(""); txt1.setText(""+datos+n6.getText()); }else if (fuente == n7) { txt1.setText(""); txt1.setText(""+datos+n7.getText()); }else if (fuente == n8) { txt1.setText(""); txt1.setText(""+datos+n8.getText()); }else if (fuente == n9) { txt1.setText(""); txt1.setText(""+datos+n9.getText()); }else if (fuente == punto) { txt1.setText(""); txt1.setText(""+datos+punto.getText()); } //validamos segn la operacin seleccionada if(fuente==sum){ //convertir el primer nmero ingresado a un double num1=Double.parseDouble(txt1.getText()); memo=num1; oper='+'; txt1.setText(""); txt1.requestFocus();
}else if(fuente==res){ num1=Double.parseDouble(txt1.getText()); memo=num1; oper='-'; txt1.setText(""); txt1.requestFocus(); }else if(fuente==mul){ num1=Double.parseDouble(txt1.getText()); memo=num1; oper='*'; txt1.setText(""); txt1.requestFocus(); }else if(fuente==div){ num1=Double.parseDouble(txt1.getText()); memo=num1; oper='/'; txt1.setText(""); txt1.requestFocus(); }else if(fuente==mod){ num1=Double.parseDouble(txt1.getText()); memo=num1; oper='%'; txt1.setText(""); txt1.requestFocus(); } //mostramos en el JTextField segn la operacin realizada if (fuente==igual){ //convertir el segundo nmero ingresado un double num2=Double.parseDouble(txt1.getText()); //segn la operacin mostrar el resultado if (oper=='+'){ total=num1+num2; txt1.setText(""+total); }else if(oper=='-'){ total=num1-num2; txt1.setText(""+total); }else if(oper=='*'){ total=num1*num2; txt1.setText(""+total); }else if(oper=='/'){ total=num1/num2; txt1.setText(""+total); }else if(oper=='%') total=num1 % num2; txt1.setText(""+total); } //mostramos el primer valor digitado if(fuente==borrarActual){ num2=0; txt1.setText(""+memo); } //borramos todos lo valores if(fuente==borrar){ num1=0; num2=0;
memo=0; txt1.setText(""); txt1.requestFocus(); } repaint(); } catch (NumberFormatException nfe) { //Aadimos una excepcin por si introducimos letras //o si se realiza divisin por cero txt1.setText("0"); } } }