• Sábado 4 de Mayo de 2024, 14:36

Autor Tema:  if (nota>5)sout("nesecito hacer una calculadora diferente");  (Leído 2228 veces)

babyshaolam

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
if (nota>5)sout("nesecito hacer una calculadora diferente");
« en: Lunes 26 de Octubre de 2009, 18:47 »
0
hola nesecito hacer una calculadora que tenga dos texbos  que los dos texbos se sumen los botones son
hechos en solo codigo pero cuando pongo un numero digamos 35 pongo el tres y despues el 5 se borra el tres ...
pues les agradezco su explicación; :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:

gophlb

  • Visitante
Re: if (nota>5)sout("nesecito hacer una calculadora diferente");
« Respuesta #1 en: Lunes 26 de Octubre de 2009, 21:27 »
0
Cita de: "babyshaolam"
hola nesecito hacer una calculadora que tenga dos texbos  que los dos texbos se sumen los botones son
hechos en solo codigo pero cuando pongo un numero digamos 35 pongo el tres y despues el 5 se borra el tres ...
pues les agradezco su explicación; :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:
pon el codigo y sera mas facil detectar el error ;)

babyshaolam

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: if (nota>5)sout("nesecito hacer una calculadora diferente");
« Respuesta #2 en: Martes 27 de Octubre de 2009, 00:54 »
0
buen hasta ak voy pero no me sale el 2 texbox  
bueno lo he modificado pero no me sirve los botones sera que me pueden ayudar por fa no me apaga no me sirve tan poco el boton de 0ff

package calculadorcita;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.CloseAction;

public class Main extends JFrame{
    String numero;
    JTextField campo1= new JTextField();
    JTextField campo2=new JTextField();
    JLabel resultado =new JLabel();
    JButton erick = new JButton("0");
    JButton uno= new JButton("1");
    JButton dos= new JButton("2");
    JButton tres =new JButton("3");
    JButton cuatro = new JButton("4");
    JButton cinco = new JButton("5");
    JButton seis = new JButton("6");
    JButton siete = new JButton("7");
    JButton ocho = new JButton("8");
    JButton nueve = new JButton("9");
    JButton sumar = new JButton("+");
    JButton dividir = new JButton("/");
    JButton restar = new JButton("-");
    JButton igual = new JButton("=");
    JButton multiplicar = new JButton("*");
    JButton borrar = new JButton("CE");
    JButton apagar = new JButton("0ff");
    JButton punto = new JButton(".");



public Main() {

    this.setLayout(null);
campo1.setBounds(30,50,250,30);
campo2.setBounds(30,80,250,30);
resultado.setBounds(300,80,200, 30);
erick.setBounds(30,250,130, 30);
erick.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                numero=campo1.getText();
                numero=numero+"0";
                campo1.setText(numero);
            }
        });
punto.setBounds(170,250,50,30);
igual.setBounds(235,250, 50,30);
sumar.setBounds(290,210,50,70);
dividir.setBounds(290, 170,50,30);
restar.setBounds(235,210,50,30);
multiplicar.setBounds(235,170,50,30);
borrar.setBounds(235,130 ,50,30);
apagar.setBounds(290,130,50,30);
apagar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                apagar();
            }
        });
uno.setBounds(30, 210, 50, 30);
uno.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
           numero= campo1.getText();
          numero=numero+"1";
          campo1.setText(numero);
            }
        });
dos.setBounds(100,210,50, 30);
dos.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                numero= campo1.getText();
          numero=numero+"2";
          campo1.setText(numero);
            }
        });
tres.setBounds(170,210,50,30);
tres.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                numero= campo1.getText();
          numero=numero+"3";
          campo1.setText(numero);
            }
        });
cuatro.setBounds(30,170,50,30);
cuatro.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                numero= campo1.getText();
          numero=numero+"4";
          campo1.setText(numero);
            }
        });
cinco.setBounds(100,170,50,30);
cinco.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                numero = campo1.getText();
                numero=numero+"5";
                        campo1.setText(numero);
            }
        });
seis.setBounds(170,170,50,30);
seis.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
              numero = campo1.getText();
                  numero=numero+"6";
              campo1.setText(numero);
            }
        });
siete.setBounds(30,130,50,30);
siete.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

          numero = campo1.getText();
          numero = numero+"7";
          campo1.setText(numero);
            }
        });
ocho.setBounds(100,130,50,30);
ocho.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                numero=campo1.getText();
                numero=numero+"8";
                campo1.setText(numero);
            }
        });
nueve.setBounds(170, 130,50,30);
nueve.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
           numero=campo1.getText();
           numero=numero+"9";
           campo1.setText(numero);
            }
        });
this.add(campo1);
this.add(campo2);
this.add(resultado);
this.add(punto);
this.add(igual);
this.add(uno);

this.add(sumar);
sumar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                suma();
            }
        } );
this.add(restar);
restar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
               restar();
            }
        });
this.add(multiplicar);
multiplicar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                multiplicar();
            }
        });
this.add(dividir);
dividir.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
              dividir();
            }
        });
this.add(borrar);
borrar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                borrar();
            }
        });
this.add(apagar);
this.add(erick);
this.add(uno);
this.add(dos);
this.add(tres);
this.add(cuatro);
this.add(cinco);
this.add(seis);
this.add(siete);
this.add(ocho);
this.add(nueve);
this.setVisible(true);
this.setSize(400,400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);

}
public void suma(){

  int num1,num2,result;


            /*  Pattern pad =Pattern.compile("^[0-9]$");
              Matcher mad = pad.matcher(campo1.getText());
              Matcher mad1 = pad.matcher(campo2.getText());
               if(mad.find()&& mad1.find()) {*/

                num1 = Integer.parseInt(campo1.getText());
                num2 = Integer.parseInt(campo2.getText());

               result= num1+num2;
         resultado.setText(String.valueOf(result));

              /* }
               else {
                JOptionPane.showMessageDialog(new JFrame(),"no permitido este caracter!" );
               }*/


}
public void  restar(){

    int num1,num2,result;

num1 = Integer.parseInt(campo1.getText());
num2 = Integer.parseInt(campo2.getText());

result = num1-num2;
  resultado.setText(String.valueOf(result));
}
public void multiplicar (){
 int num1,num2,result;

 num1 = Integer.parseInt(campo1.getText());
 num2 = Integer.parseInt(campo2.getText());

 result = num1 * num2;
 resultado.setText(String.valueOf(result));

}
    public void dividir(){

    double num1,num2,result;
    num1= Double.parseDouble(campo1.getText());
    num2 = Double.parseDouble(campo2.getText());

    result = num1/num2;
    resultado.setText(String.valueOf(result));


    }
    public void uno (){
         

    }
    public void borrar(){

campo1.setText("");
campo2.setText("");

    }
    public void apagar(){
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);= no me sirve
System.exit(o); = no me sirve

    }
    public static void main(String[] args) {
         new Main();
    }


}
 :hitcomp:  :hitcomp:  :hitcomp:  :hitcomp:  :hitcomp:  :hitcomp:  :hitcomp:  :hitcomp:
« última modificación: Jueves 29 de Octubre de 2009, 04:47 por babyshaolam »

gophlb

  • Visitante
Re: if (nota>5)sout("nesecito hacer una calculadora diferente");
« Respuesta #3 en: Martes 27 de Octubre de 2009, 15:09 »
0
yo veo el codigo bien y una vez probado, veo las dos cajitas, y hasta me ha hecho una suma.

eso si, al principio no me ha salido absolutamente nada hasta que no he cambiado de tamaño el JFrame

babyshaolam

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: if (nota>5)sout("nesecito hacer una calculadora diferente");
« Respuesta #4 en: Martes 27 de Octubre de 2009, 17:15 »
0
Cita de: "gophlb"
yo veo el codigo bien y una vez probado, veo las dos cajitas, y hasta me ha hecho una suma.

eso si, al principio no me ha salido absolutamente nada hasta que no he cambiado de tamaño el JFrame
Si ahora nesecito es que cada numero lo pueda agregar no por el teclado sino por el mouse :oops:  :oops:  :oops:  :oops:  :oops:  :oops:  :oops:  :oops:

gophlb

  • Visitante
Re: if (nota>5)sout("nesecito hacer una calculadora diferente");
« Respuesta #5 en: Viernes 30 de Octubre de 2009, 18:23 »
0
Cita de: "babyshaolam"
Cita de: "gophlb"
yo veo el codigo bien y una vez probado, veo las dos cajitas, y hasta me ha hecho una suma.

eso si, al principio no me ha salido absolutamente nada hasta que no he cambiado de tamaño el JFrame
Si ahora nesecito es que cada numero lo pueda agregar no por el teclado sino por el mouse :oops:  :oops:  :oops:  :oops:  :oops:  :oops:  :oops:  :oops:
tendras que agregar a cada botoncito el evento correspondiente para que ponga en el textbox el numerito.

la cuestion es: como hacer que escriba en uno u otro?
la secuencia logica de actuacion seria "pulso todos los numeros aque hagan falta para la primera cifra, pulso la operacion correspondiente, pulso los numeros para la segunda cifra y le doy al igual"

pues mira a ver como lo implementas...
quizas con un booleano que sea "operacionPulsada" para decidir qué textbox tiene que elegir para añadir el numero
o quizas una variable de tipo integer que almacene la operacion (inicialmente a null) para saber si se ha pulsado o no y decidir el textbox...
o quizas con otro metodo que se te ocurra a ti :)

babyshaolam

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: if (nota>5)sout("nesecito hacer una calculadora diferente");
« Respuesta #6 en: Sábado 31 de Octubre de 2009, 05:14 »
0
no me  puedes dar un ejemplito es que soy muy nuevo con esto un ejemplito en codigo para poderlo yo implementarlo gracias :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:

gophlb

  • Visitante
Re: if (nota>5)sout("nesecito hacer una calculadora diferente");
« Respuesta #7 en: Sábado 31 de Octubre de 2009, 09:49 »
0
Cita de: "babyshaolam"
no me  puedes dar un ejemplito es que soy muy nuevo con esto un ejemplito en codigo para poderlo yo implementarlo gracias :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:  :good:
tu has hecho un evento que sabe cuándo has pulsado el boton de =, si mal no recuerdo.
de igual manera, has hecho una funcion que pinta un texto en un label.

ahora necesitas aclararte de cómo quieres que funcione tu calculadora.
creo que la forma mas logica es como te dije: pulsas un numero, el boton de la operacion y luego el otro numero
como tienes dos textboxes, necesitas diferenciar si estas antes o despues de haber pulsado el boton de la operacion

si vas a hacerlo asi necesitas, por ejemplo, una variable global
Integer operacion = null;
Esta variable sera SIEMPRE NULL excepto cuando hayas pulsado el boton de operacion, en cuyo caso albergara un numero que identificara el tipo de operacion (1=suma, 2=resta, etc o como quieras hacerlo)
Cuando pulses el boton de = entonces la variable operacion debera volver a su estado inicial de NULL para evitar confusiones y poder recomenzar el funcionamiento de la calculadora

En definitiva, esta variable te ayudara a discernir si has pulsado un boton de operacion o no y a identificar la misma.

Desde aqui el algoritmo es bien sencillo:
Cuando pulses un boton de numero, tendras que comprobar si la variable operacion esta a null o no. Si esta a null, quiere decir que estas con el primer textbox introduciendo el primer numero. No tienes mas que hacer un IF sobre la variable operacion para decidir cual es el textbox en el que añadiras tu numero. En este caso, como operacion == NULL, el texto se lo añadiras al primer textbox.

Cuando pulses el boton de suma, resta, multiplicacion o division, pondras en la variable operacion un numero identificativo de la operacion que has pulsado.

Si ahora pulsaras un boton de numero, al comprobar en el IF que operacion != null, tendrias que hacer que tu aplicacion empezara a añadir los numeros que pulses sobre el segundo textbox.
Para saber como añadir texto y recoger el que ya habia, mirate el javadoc de textbox.

Finalmente, cuando pulses al boton de =, la variable operacion sera reasignada a null, y tendras un evento que llame a un metodo que realice la operacion y ponga el resultado en el label, como hacias antes.
¿Cómo sera este metodo? Pues veamos, puedes hacer un CASE (o varios IF, como mas comodo lo veas) sobre la variable operacion y dependiendo del valor que tenga, el resultado sera una multiplicacion, division, suma o resta de los numeros que tengas en los textboxes (nuevamente aqui necesitaras extraer el valor STRING de los textboxes y reconvertirlo a int o Integer (mirate los javadoc de Textbox, String e Integer para ver como hacerlo))

Ahora solo te falta pintar ese resultado en el label tal y como hacias antes.

Sobre como hacer los eventos, si ya has hecho uno puedes hacer todos porque son muy parecidos, lo unico que necesitas es pensar un poquito (muy poquito) porque casi casi te lo he dado ya hecho :P
asi pues, ale, a implementar mi texto ;)

si tienes cualquier duda, pones tu intento de codigo y le echamos un vistazo

suerte !