martes, 29 de abril de 2014

Calculadora en Java

Hola!! 
Viendo un poco de métodos, aprenderemos a realizar una calculadora estándar en Netbeans.
Solo como en base al principio veremos el gráfico de la calculadora.


Realizaremos esta calculadora estándar, también veremos un poco de métodos.

COMENCEMOS:

Primer paso: Introducir los números:
Como vemos en la imagen, se realizara el codigo en el evento actionPerformed del botón.

Para el botón 1:


private void btnUnoActionPerformed(java.awt.event.ActionEvent evt) { 

     jtxtPantalla.setText(jtxtPantalla.getText( ) + "1");

}


Para el botón 2 se hace el mismo código, tan solo se cambia el número 1 por el 2, así se irá cambiando según del número que se ingresará por el botón.

Luego de terminar de programar cada botón numérico:

Declaramos las variables globales, las cuales utilizaremos mediante todo el proceso.
//Variables globales
             String valor1;
             String valor2;
             String signo;


Al realizar una suma de 2 números, se dese saber el primer número, este primer número se almacenará en 'valor1', el signo de suma se almacenará en 'signo' y el segundo número para completar la suma se almacenará en 'valor2'.

Luego crearemos el método calculando, en donde se procederá a realizar el proceso del cálculo de los valores ingresados.

//Metodo que realiza el proceso de la calculadora, segun los valores que se ingrese por pantalla.


public static String calculando(String valor1, String valor2, String signo)

{

     Double resul=0.0;

     String rpt;



     if(signo.equals("-"))

      {

         resul=Double.parseDouble(valor1) - Double.parseDouble(valor2); 

       } 



     if(signo.equals("+"))

      {

         resul=Double.parseDouble(valor1) + Double.parseDouble(valor2);

      }



      if(signo.equals("*"))

        {

           resul=Double.parseDouble(valor1) * Double.parseDouble(valor2);

        }


       if(signo.equals("/"))

        {                 resul=Double.parseDouble(valor1) / Double.parseDouble(valor2);

        }

        

        rpt=resul.toString();

        return rpt;

    }



Como vemos en el código, al igual que las variables globales 'valor1' , 'valor2' , 'signo' son de tipo String , ¿porqué?,  por que al ingresar un valor a la caja de texto 'jtxtPantalla' este se almacena como cadena, es decir tipo String y ese es el resultado que se quiere mostrar al fnal, una repsuesta tipo String. Es por eso que en cada proceso de suma, resta, multiplicación, división, se hace la conversión a  Double (décimal mayor).
Claro antes de realizar el proceso el signo es comparado y así pueda realizar su función.

Ahora veremos en código del botón suma (+):




/* Captura lo que hay en pantalla y dice si lo que hay en pantalla es diferente al vacio (" "), entonces el 'valor1' tendrá almacenado a lo que se haya ingresado en pantalla. Luego le da el valor al signo, que en este caso es de suma (+) y limpia pantalla, para que se ingrese el 'valor2' */

 private void btnMasActionPerformed(java.awt.event.ActionEvent evt) {                                       

if(!jtxtPantalla.getText().equals(""))

  {

     valor1=jtxtPantalla.getText();

     signo="+";

     jtxtPantalla.setText("");

 }

}

El mismo código se utiliza para la resta, multiplicación, división, solo se cambia el valor del signo.

* Si queremos ingresar un valor decimal, como '3.5', entonces el código es el siguiente:

/*Metodo de tipo boolean (recibe solo valores de verdad o falsedad ) para ver si existe un punto en pantalla */
/*declara una variable respuesta 'rpt=false' luego se crea un for para que vaya recorriendo todos los digitos de la variable pantalla que tendra como valor a lo que se ingrese por pantalla, en ese recorrido ira comparando si hay algún punto, en caso que asi sea, mandara como respuesta 'true', en caso contrario se quedara como al principio, con el valor 'false' */

public boolean hayPunto(String pantalla)

{

     boolean rpt;

     rpt=false;



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

     {

        if(pantalla.substring(i, i+1).equals("."))

     {
   rpt=true;

   break;

  }



  }return rpt;



}


En el botón punto:
/*Guardara en la variable pantalla de tipo String lo que se ingrese. Luego verifica si no hay elemento en pantalla, si es asi entonces le dará un valor de '0.'
En caso no hay ningun elemento concatenara un '.' a la cadena. Luego se mostrara en pantalla*/

private void btnPuntoActionPerformed(java.awt.event.ActionEvent evt) {                                         
     //mostrara un 0. cuando no haya nada en la caja de texto

     String pantalla;

     pantalla=jtxtPantalla.getText();



     if(pantalla.length()<=0)

      {

         jtxtPantalla.setText("o.");

       }


      else if(!hayPunto(jtxtPantalla.getText()))

      {

          jtxtPantalla.setText(jtxtPantalla.getText() + ".");

      }

}


En el botón 'C' : Este botón elimina de uno en uno los dígitos que hay en pantalla.

    /*Captura los valores de pantalla. Procede a verificar si hay algun elemento en pantalla, si es así (si hay algun digito) entonces la variable de tipo String 'pantalla ' la examina mediante la cantidad de dígitos, si la cantidad de digitos es 5, entonces le restara 1 y se quedara con 4*/
   
private void btnCActionPerformed(java.awt.event.ActionEvent evt) {                                    



     String pantalla; 



     pantalla=jtxtPantalla.getText();

      

       if(pantalla.length()>0)

       {

          pantalla=pantalla.substring(0, pantalla.length()-1);

          jtxtPantalla.setText(pantalla);

       }

}


Botón 'CE' : Elimina todos los elementos que hay en pantalla, lo deja en blanco

private void btnCeActionPerformed(java.awt.event.ActionEvent evt) { 



         jtxtPantalla.setText(" ");



}
  

Botón signo: Dará un valor positivo o negativo a los elementos en pantalla.


/*A la varible de tipo decimal 'num' le da el valor de (-1)  multiplicado por   el valor decimal de pantalla. Luego, como 'num es de tipo decimal y para mostrarlo tiene que ser de tipo cadena, entonces se convierte a cadena con 'ToString''*/

private void btnSignoActionPerformed(java.awt.event.ActionEvent evt) {                                         



     Double num;

     String pantalla;



     pantalla=jtxtPantalla.getText();


       if(pantalla.length()>0)

          {

              num=-1*Double.parseDouble(pantalla);

              jtxtPantalla.setText(num.toString());

           }

}



Nota: Acá les dejo el proyecto de la calculadora en Netbeasn IDE 7.4



calculadora