Manual de Java

 
 
 

Mapa Web

 
borde   borde
Portada arrow Lista de Códigos Java arrow Una calculadora en Java

 

Una calculadora en Java Imprimir E-mail
Este applet crea una calculadora que funciona perfectamente en una página web y con cualquier browser.

import java.util.*;
import java.awt.*;
import java.applet.*;

/**
* Calculadora sencilla
*/
public class Calc extends Applet {

Display display = new Display();

/**
* inicializa el applet Calc
*/
public void init () {

setLayout(new BorderLayout());
Keypad keypad = new Keypad();

add ("North", display);
add ("Center", keypad);
}

/**
* manipulador para las funciones de la calculadora.
*/
public boolean action (Event ev, Object arg) {

if (ev.target instanceof Button) {

String label = (String)arg;
if (label.equals("C")) {
display.Clear ();
return true;
}
else if (label.equals(".")) {
display.Dot ();
return true;

else if (label.equals("+")) {
display.Plus ();
return true;
}
else if (label.equals("-")) {
display.Minus ();
return true;
}
else if (label.equals("x")) {
display.Mul ();
return true;
}
else if (label.equals("/")) {
display.Div ();
return true;
}
else if (label.equals("+/-")) {
display.Chs ();
return true;
}
else if (label.equals("=")) {
display.Equals ();
return true;
}
else {
display.Digit (label);
return true;
}
}
return false;
}


/**
* Esto permite que la clase se use como applet o como aplicación independiente 
*/ 
public static void main (String args[]) {

Frame f = new Frame ("Calculator");
Calc calc = new Calc ();

calc.init ();

f.resize (210, 200);
f.add ("Center", calc);
f.show ();
}
}

/* -------------------------------------------------- */

/**
* Keypad manipula la entrada de datos y la visualización de resultados 
*/
class Keypad extends Panel {

/**
* inicializa keypad, añade los botones, establece los colores, etc.
*/
Keypad (){

Button b = new Button();
Font font = new Font ("Times", Font.BOLD, 14);
Color functionColor = new Color (255, 255, 0);
Color numberColor = new Color (0, 255, 255);
Color equalsColor = new Color (0, 255, 0);
setFont (font);
b.setForeground (Color.black);

add (b = new Button ("7"));
b.setBackground (numberColor);
add (b = new Button ("8"));
b.setBackground (numberColor);
add (b = new Button ("9"));
b.setBackground (numberColor);
add (b = new Button ("/"));
b.setBackground (functionColor);

add (b = new Button ("4"));
b.setBackground (numberColor);
add (b = new Button ("5"));
b.setBackground (numberColor);
add (b = new Button ("6"));
b.setBackground (numberColor);
add (b = new Button ("x"));
b.setBackground (functionColor);

add (b = new Button ("1"));
b.setBackground (numberColor);
add (b = new Button ("2"));
b.setBackground (numberColor);
add (b = new Button ("3"));
b.setBackground (numberColor);
add (b = new Button ("-"));
b.setBackground (functionColor);

add (b = new Button ("."));
b.setBackground (functionColor);
add (b = new Button ("0"));
b.setBackground (numberColor);
add (b = new Button ("+/-"));
b.setBackground (functionColor);
add (b = new Button ("+"));
b.setBackground (functionColor);

add (b = new Button ("C"));
b.setBackground (functionColor);
add (new Label (""));
add (new Label (""));
add (b = new Button ("="));
b.setBackground (equalsColor);

setLayout (new GridLayout (5, 4, 4, 4));
}

}

/* -------------------------------------------------- */

/**
* la clase Display gestiona la visualización del resultado calculado y también
* implementa las tecla de fucnión de la calculadora 
*/
class Display extends Panel{

double last = 0;
int op = 0;
boolean equals = false;
int maxlen = 10;
String s;
Label readout = new Label("");

/**
* Inicializa display
*/
Display () {

setLayout(new BorderLayout()); 
setBackground (Color.red);
setFont (new Font ("Courier", Font.BOLD + Font.ITALIC, 30));
readout.setAlignment(1);
add ("Center",readout);
repaint();
Clear ();
}

/**
* manipulación del pulsado de un dígito
*/
void Digit (String digit) {
checkEquals ();

/*
* quita los ceros precedentes
*/
if (s.length () == 1 && s.charAt (0) == '0' && digit.charAt (0) != '.')
s = s.substring (1);

if (s.length () < maxlen)
s = s + digit;
showacc ();
}

/**
* manipulación del punto decimal
*/
void Dot () {
checkEquals ();

/*
* ya tiene un '.'
*/
if (s.indexOf ('.') != -1)
return;

if (s.length () < maxlen)
s = s + ".";
showacc ();
}

/**
* si el usuario pulsa = sin haber pulsado antes un operador
* (+,-,x,/), pone cero en la visualización
*/
private void checkEquals () {
if (equals == true) {
equals = false;
s = "0";
}
}

/**
* operador suma para uso posterior.
*/
void Plus () {
op = 1;
operation ();
}

/**
* operador resta para uso posterior.
*/
void Minus () {
op = 2;
operation ();
}

/**
* operador multiplicación para uso posterior.
*/
void Mul () {
op = 3;
operation ();
}

/**
* operador división para uso posterior.
*/
void Div () {
op = 4;
operation ();
}

/**
* Interpreta el valor de la visualización como double y lo almacena
* para uso posterior 
*/
private void operation () {
if (s.length () == 0) return;

Double xyz = Double.valueOf (s);
last = xyz.doubleValue ();

equals = false;
s = "0";
}
/**
* invalida el valor actual y revisualiza.
*/
void Chs () {
if (s.length () == 0) return;

if (s.charAt (0) == '-') s = s.substring (1);
else s = "-" + s;

showacc ();
}

/**
* termina el último cálculo y visualiza el resultado 
*/
void Equals () {
double acc;

if (s.length () == 0) return;
Double xyz = Double.valueOf (s);
switch (op) {
case 1:
acc = last + xyz.doubleValue ();
break;

case 2:
acc = last - xyz.doubleValue ();
break;

case 3:
acc = last * xyz.doubleValue ();
break;

case 4:
acc = last / xyz.doubleValue ();
break;

default:
acc = 0;
break;
}

s = new Double (acc).toString ();
showacc ();
equals = true;
last = 0;
op = 0;
}

/**
* limpia la visualización y el último valor interno 
*/
void Clear () {
last = 0;
op = 0;
s = "0";
equals = false;
showacc ();
}

/**
* pide que se repinte el resultado
*/
private void showacc () {
readout.setText(s);
repaint ();
}
}

Alejandro Gassman
http://www.gamarod.com.ar/articulos/una_calculadora_en_java.asp

 

 
Portada
Capítulos del Manual de Java
Introducción a Java
Origen de Java
Características de Java
Instalación del JSDK
Conceptos Basicos
Programación
Control de Flujo
Clases
Variables y Métodos de Instancia
Alcance de Objetos y Reciclado de Memoria
Herencia
Control de Acceso
Variables y Métodos Estáticos
this y super
Clases Abstractas
Interfaces
Métodos Nativos
Paquetes
Referencias
Referencias y Arrays
Referencias y Listas
Una mínima aplicación
Compilación y Ejecución de Hola Mundo
Un Applet Básico
La Clase Math
La Clase Character
La Clase Float
La Clase Double
La Clase Integer
La Clase Long
La Clase Boolean
La Clase String
La Clase StringBuffer
Uso de Conversiones
Manejo de Excepciones
Generar Excepciones
Excepciones Predefinidas
Crear Excepciones
Capturar Excepciones
Propagación de Excepciones
Entrada/Salida Estándar
Ficheros
Streams de Entrada
Streams de Salida
Ficheros de Acceso Aleatorio
Practicar en línea
Lista de prácticas en línea
FAQ
Preguntas frecuentes
Códigos Java
Lista de Códigos Java
Foros
Foros Java
Otros Manuales
Manuales de otros lenguajes
 
   
 
 
Alojamiento web en Hostalia