/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema con calculadora

 
      Índice del Foro elrincondelc.com -> Java
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
wonck



Registrado: 20 Sep 2006
Mensajes: 32
Ubicación: Puebla

MensajePublicado: 28/09/2007 6:29 am
Título: Problema con calculadora

Hola a todos encontre en un libro el siquiente programa de un calculadora hecha en java
Código:

/**
 * @(#)calculadora.java
 *
 *
 * @author
 * @version 1.00 2007/9/23
 */

import java.awt.*;
import java.lang.*;

class calculadora extends Frame
{
//Comienza la declaracion de variables globales
//20 botones de la calculadora
Button boton[] = new Button[20];
//declara e inicializa un boton para salir del programa
Button boton_salir = new Button("Salir");
//Declara e inicializa las leyendas de los botones

String leyenda[] = { "7" , "8" , "9" , "/" ,
                "4" , "5" , "6" , "*" ,
                 "1" , "2" , "3" , "-" ,
                 "0" , "." , "=" , "+" ,
                 "+/-","Raiz x" , "1/x" , "C" };
//Declara la zona delimitada de los botones

Panel zona_botones;
//Ventana de edicion para desplegar el resultado de las operaciones

TextField resultado;

double primer_operando, resultado_operacion;
//Bandera que indica se se trata del segundo operando
//en una operacion binaria

//Bandera que indica si se espera el segundo operando
//en una operacion binaria

boolean segundo_operando;

//cadena que contiene la operacion a realizar
String operacion;

//Bandera de estado 0 -captura siguiente operando
//1- captura operando actual
int estado;

//Termina la declaracion de variables globale

    public calculadora() {
       //Inicializacion de operandos y resultados
       primer_operando = resultado_operacion = 0;
       segundo_operando = false;
       operacion = "";
       estado = 0;
       
    }
   
    //rutina que inicializa el programa
    void inicializa()
    {
       int i;//variable local
       //Se inicializa la pantalla de resultados
       resultado = new TextField("0");
       
       //Inicializa el panel de visualizacion
       zona_botones = new Panel();
       //Configura el panel de tipo cuadricula (GridLayout)
       //cada cuadro contiene un boton en 5 filas y 4 columnas
       //el espacio vertical entre los botones es de 8 pixeles
       //y el espacio horizontal entre estos es de 6
       zona_botones.setLayout(new GridLayout(5,4,8,6));
       
       //Inicializacion cada boton y lo agrega al panel de botones
       for(i = 0; i < 20; i++)
       {
          //Inicializa e incluye la leyenda para cada boton
          boton[i] = new Button(leyenda[i]);
          //Agrega el boton al panel de botones
          zona_botones.add(boton[i]);
       }
    //Inicializa la aplicacion con la configuracion de frontera
    //A diferencia del tipo de cuadricula, esta configuracion solo
    //tiene cinco zonas, llamadas North, West, East, Center, Sounth
   
    setLayout(new BorderLayout());
   
    //Agrega la ventana de resultadis en la parte
    //superior de la aplicacion
    add("North",resultado);
   
    //Agrega en el centro el panel de botones
    add("Center",zona_botones);
   
    //Agrega abajo el boton de salir
    add("South",boton_salir);
   
    //Configura el tamaño de la aplicacion a 240 pixeles
    //de ancho por 280 de alto
    resize(240,280);
   
    setTitle("Calculadora");
    //Muetra la apliacion
    show();
    }
   
    //Rutina que realiza las acciones indicadas
    //dependiendo del evento que ocurra
   
    public boolean postEvent(Event evento)
    {
       if (evento.target == boton_salir)
       {
          System.exit(0);
          return false;
       }
       
       if (evento.target == boton[13]) //si el boton presionado es el "."
       {
          if (estado == 0) //si aun no se espera algun digito del primer operando
          {
             resultado.setText("0."); //Al cero se le agrega el punto
             estado = 1;
          }
       //si no encuentra otro punto decimal lo concatena
       //con lo que haya en la pantalla de la calculadora
       //La funcion indexOf devuelve el indice de la primera ocurrencia
       // de la subcadena dentro de una cadena; si no hay, devuelve -1
       else if (resultado.getText().indexOf(".") == -1)
          resultado.setText(resultado.getText()+".");
       }
       
       // Si el evento corresponde a un boton numerico
       if((evento.target == boton[0]) || (evento.target == boton[1]) ||
          (evento.target == boton[2]) || (evento.target == boton[4]) ||
          (evento.target == boton[5]) || (evento.target == boton[6]) ||
          (evento.target == boton[8]) || (evento.target == boton[9]) ||
          (evento.target == boton[10]) || (evento.target == boton[12]))
       {
          //la variable dbonton recibe el caracter del boton numerico
          String dboton = (String)evento.arg;
          if(estado == 0)//si aun espera algun digito del primer operando
          {
             resultado.setText("0");
             estado = 1;
          }
          //si la pantalla contiene un cero o previamente hubo un error
          if((resultado.getText().equals("0")) ||
             (resultado.getText().equals("Error")))
             {
                //No se capturan ceros a la izquierda
                if(!dboton.trim().equals("0"))
                resultado.setText(dboton);
             }
             //Se concatena el numero con los anteriores
             else resultado.setText(resultado.getText()+dboton);
             }
             
          //Si el evento es una operacion binaria
          if((evento.target == boton[3]) || (evento.target == boton[7]) ||
             (evento.target == boton[11]) || (evento.target == boton[15]))
             {
                //Convierte la cadena de la variable de la calculadora
                // a un flotante de doble precision
                Double d = new Double(resultado.getText());
                //Si se estaba introduciendo el segundo operando,
                //se realiza la operacion anterior automaticamente
                if(segundo_operando)
                {        
                   if(operacion == "+")
                      resultado_operacion = primer_operando + d.doubleValue();
                   if(operacion == "-")
                      resultado_operacion = primer_operando - d.doubleValue();
                   if(operacion == "*")
                      resultado_operacion = primer_operando * d.doubleValue();
                   if(operacion == "/")
                   {
                   
                      if(d.doubleValue()!= 0)
                         resultado_operacion = primer_operando / d.doubleValue();
                         else
                         {
                            resultado.setText("Error");
                            estado = 0; //Regresa el resultado para pedir el primer operando
                            segundo_operando = false;
                            return false;
                         }
                   }
                   //Muestra el resultado de la operacion
                   resultado.setText(String.valueOf(resultado_operacion));
                }   
   Double d1 = new Double(resultado.getText());
   operacion = (String) evento.arg;
   //El resultado de la operacion se convierte en
   //el primer opernado de la siguente
   primer_operando = d1.doubleValue();
   estado = 0;
   segundo_operando = true;
      }   
         //Si el evento es "="
         if(evento.target == boton[14])
         {
            Double d = new Double(resultado.getText());
            if(operacion == "+")
                      resultado_operacion = primer_operando + d.doubleValue();
                   if(operacion == "-")
                      resultado_operacion = primer_operando - d.doubleValue();
                   if(operacion == "*")
                      resultado_operacion = primer_operando * d.doubleValue();
                   if(operacion == "/")
                   {
                   
                      if(d.doubleValue()!= 0)
                         resultado_operacion = primer_operando / d.doubleValue();
                         else
                         {
                            resultado.setText("Error");
                            estado = 0; //Regresa el resultado para pedir el primer operando
                            segundo_operando = false;
                            return false;
                         }
                   }
                   
                   //Despliega el resultado y espera el primer
                   //operando del a siguiente operacion
                   
                   resultado.setText(String.valueOf(resultado_operacion));
                   estado = 0;
                   segundo_operando = false;
         }
         
         //Si el evento es una operacion unitaria
         
         if((evento.target == boton[16]) || (evento.target == boton[17])
            || (evento.target == boton[18]))
            {
               String nboton = (String)evento.arg;
               //La operacion unaria se realiza de inmediato
               if(nboton.equals("+/-"))
               {
                  Double d = new Double(resultado.getText());
                  if(d.doubleValue() != 0)
                  {
                     resultado_operacion = -1 * d.doubleValue();
                     resultado.setText(String.valueOf(resultado_operacion));
                  }
                  else resultado_operacion = 0;
                  
               }
               if(nboton.equals("1/x"))      
               {
                  Double d = new Double(resultado.getText());
                  if(d.doubleValue() != 0)
                  {
                     resultado_operacion = 1 / d.doubleValue();
                     resultado.setText(String.valueOf(resultado_operacion));
                  }
                  else resultado.setText("Error");
               }
                     
                     if (nboton.equals("Raiz x"))
                     {
                        Double d = new Double(resultado.getText());
                        if(d.doubleValue() >= 0)
                        {
                         resultado_operacion = Math.sqrt(d.doubleValue());
                         resultado.setText(String.valueOf(resultado_operacion));
                        }
                     
            else resultado.setText("Error");
            }
            estado = 0;
            segundo_operando = false;
     }
     if(evento.target == boton[19]) //Si el boton es C
     {
        //Se reinicializa la calculadora y se borra lo que tenga en pantalla
        operacion = "";
        primer_operando = resultado_operacion = 0;
        resultado.setText("0");
        estado = 0;
        segundo_operando = false;
     }
return true;
}
public static void main(String args[]) //Rutina principal del programa
{
   calculadora calcu = new calculadora();
   calcu.inicializa();
}
}


a la hora de compilarlo en JCreator LE 4.50 me sale los siguiente:
Código:

--------------------Configuration: ds - JDK version 1.5.0_12 <Default> - <Default>--------------------
Note: C:\Documents and Settings\Usuario Final\Mis documentos\JCreator LE\MyProjects\calculadora.java\ds\calculadora.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

Process completed.

Version: JCreator LE 4.5

Y al compilarlo desde el simobolo del sistema me sale el mismo error:

y al ejecutarlo en JCreator y querer sumar dos numeros por ejemplo el 5+3 me sale esto:

Si alguien me puede expilcar a que se deve, porfa si me pueden explicar[/code]
_________________
DA MAS FUERZA SABERSE AMADO QUE SABERSE FUERTE
JOHANN W. GOETHE
Volver arriba
grandzam



Registrado: 10 Feb 2005
Mensajes: 159

MensajePublicado: 01/10/2007 8:35 am
Título:

Lo de deprecated ps no te preocupes porque no es nada malo, solamente es que seguramente estas usando métodos anticuados, es decir algunos de ellos ya pasaron a la historia, sin embargo no te preocupes de todas maneras funciona, de lo de null cuando presionas +, no le vi mucho porque no tengo chance de ver todo tu codigo para saber exsactamente que esta pasando...
Volver arriba
wonck



Registrado: 20 Sep 2006
Mensajes: 32
Ubicación: Puebla

MensajePublicado: 02/10/2007 4:54 am
Título:

ok, ojala cuando tengas tiempo lo cheques y me puedas ayudar, pero de todas formas gracias
_________________
DA MAS FUERZA SABERSE AMADO QUE SABERSE FUERTE
JOHANN W. GOETHE
Volver arriba
gorkau
Site Admin


Registrado: 13 Ago 2002
Mensajes: 366
Ubicación: Bilbao

MensajePublicado: 03/10/2007 3:10 am
Título:

Para saber qué código anticuado estás usando compila con la opción:

-Xlint:deprecation
_________________
Gorka Urrutia
El Rincón del C
Volver arriba
      Índice del Foro elrincondelc.com -> Java
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com