Foros del Web » Programación para mayores de 30 ;) » Java »

problema java calculadora

Estas en el tema de problema java calculadora en el foro de Java en Foros del Web. Hola resulta que estoy haciendo una calculadoora en swing pero tengo unos problemitas con el tema de los calculos, o sea mi intencion es que ...
  #1 (permalink)  
Antiguo 21/05/2008, 08:41
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 16 años, 3 meses
Puntos: 6
problema java calculadora

Hola resulta que estoy haciendo una calculadoora en swing pero tengo unos problemitas con el tema de los calculos, o sea mi intencion es que la persona que la use pueda ir sumando varias cosas o sea pueda hacer 5 + 6 + 8 =19 pero a medida que valla sumando deberia ir mostrando el resultado de la suma sin tener que apretar el boton de = aqui les dejo el codigo se que algo esta fallando debido a que no me suma correctamente. no les puedo dejar el codigo completo porq es muy exteso pero les dejo parte del mismo

Código:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author  djagu_26
 */
public class Calculadora extends javax.swing.JFrame {

    String operador = "";
    String valor1 = "";
    String valor2 = "";
    DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
    DecimalFormat formato;
    KeyListener keys = new KeyListener() {

        public void keyTyped(KeyEvent e) {
        }

        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD0) {
                txtVisor.setText(txtVisor.getText() + "0");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD1) {
                txtVisor.setText(txtVisor.getText() + "1");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD2) {
                txtVisor.setText(txtVisor.getText() + "2");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD3) {
                txtVisor.setText(txtVisor.getText() + "3");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD4) {
                txtVisor.setText(txtVisor.getText() + "4");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD5) {
                txtVisor.setText(txtVisor.getText() + "5");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD6) {
                txtVisor.setText(txtVisor.getText() + "6");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD7) {
                txtVisor.setText(txtVisor.getText() + "7");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD8) {
                txtVisor.setText(txtVisor.getText() + "8");
            }
            if (e.getKeyCode() == KeyEvent.VK_NUMPAD9) {
                txtVisor.setText(txtVisor.getText() + "9");
            }
            //Numero del .
            if (e.getKeyCode() == 110) {
                if (!hayComa(txtVisor.getText())) {
                    txtVisor.setText(txtVisor.getText() + ",");
                }
            }
            //Numero del +
            if (e.getKeyCode() == 107) {
                if (valor1.equals("")) {
                    valor1 = txtVisor.getText();
                } else {
                    valor2 = txtVisor.getText();
                }
                operador = "+";
                txtVisor.setText("");
                if (!valor1.equals("") && !valor2.equals("")) {
                    calcular();
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_MULTIPLY) {
                if (valor1.equals("")) {
                    valor1 = txtVisor.getText();
                } else {
                    valor2 = txtVisor.getText();
                }
                operador = "*";
                txtVisor.setText("");
                if (!valor1.equals("") && !valor2.equals("")) {
                    calcular();
                }
            }
            //Numero del -
            if (e.getKeyCode() == 109) {
                if (valor1.equals("")) {
                    valor1 = txtVisor.getText();
                } else {
                    valor2 = txtVisor.getText();
                }
                operador = "-";
                txtVisor.setText("");
                if (!valor1.equals("") && !valor2.equals("")) {
                    calcular();
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_DIVIDE) {
                if (valor1.equals("")) {
                    valor1 = txtVisor.getText();
                } else {
                    valor2 = txtVisor.getText();
                }
                operador = "/";
                txtVisor.setText("");
                if (!valor1.equals("") && !valor2.equals("")) {
                    calcular();
                }
            }
            if (e.getKeyCode() == KeyEvent.VK_DELETE) {
                txtVisor.setText("");
                operador = "";
                valor1 = "";
                valor2 = "";
            }
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                calcular();
            }
        }

        public void keyReleased(KeyEvent e) {
        }
    };

    /** Creates new form Calculadora */
    public Calculadora() {
        initComponents();
        txtVisor.setText("");
        addKeyListener(keys);
        simbolos.setDecimalSeparator(',');
        formato = new DecimalFormat("####,##", simbolos);

    }

    public boolean hayComa(String text) {
        for (int i = 0; i < text.length(); i++) {
            if (String.valueOf(text.charAt(i)).equals(",")) {
                return true;
            }
        }
        return false;
    }

    public void calcular() {
        if (!valor1.equals("") && !operador.equals("")) {
            double total = 0;
            try {
                Number primero = formato.parse(valor1);
                double valorPrimero = primero.doubleValue();
                double valorSegundo = 0;
                if (!valor2.equals("")) {
                    Number segundo = formato.parse(valor2);
                    valorSegundo = segundo.doubleValue();
                } else {
                    valor2 = txtVisor.getText();
                }

                if (operador.equals("+")) {
                    total = valorPrimero + valorSegundo;
                }

                if (operador.equals("-")) {
                    total = valorPrimero - valorSegundo;
                }

                if (operador.equals("*")) {
                    total = valorPrimero * valorSegundo;
                }

                if (operador.equals("/")) {
                    if (valorSegundo != 0) {
                        total = valorPrimero / valorSegundo;
                    }
                }
            } catch (ParseException ex) {
                Logger.getLogger(Calculadora.class.getName()).log(Level.SEVERE, null, ex);
            }

            txtVisor.setText(String.valueOf(total));
            valor1 = txtVisor.getText();
            valor2 = "";
        }
    }

 }
saludos y muchas gracias
__________________
"La magia no existe, la programacion si"

A/P Agustin Sivoplas
[email protected]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:49.