Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Loperso en 18 de Febrero 2017, 18:22

Título: Excepciones en calculadora con Interfaz gráfica (Java)
Publicado por: Loperso en 18 de Febrero 2017, 18:22
Hola, lo que ocurre es que tengo una calculadora y se me pide que controle dos excepciones que son: 1. Cuando se ingresa un dato que no es un numero, 2. Cuando se hace la division por cero.

Las excepciones deben estar en una clase aparte, y ahi esta el problema no se como hacerlo, no se que va en el Try ... He intentado varias cosas pero no me resultan, agradeceria que me guiaran en esto

Esto es lo que llevo:

En package Principal
Código: [Seleccionar]
public class Principal {
    public static void main(String[] args) {
        Vista vista = new Vista();
        Modelo modelo = new Modelo();
        Controlador controla = new Controlador(vista, modelo);
        controla.Iniciar();
        vista.setVisible(true);
    }
}

En package Modelo
Código: [Seleccionar]
public class Modelo {
    private double dato1 = 0;
    private double dato2 = 0;
    private String operador = "";
    private double total = 0;

    public double getDato1() {
        return dato1;
    }

    public void setDato1(double dato1) {
        this.dato1 = dato1;
    }

    public double getDato2() {
        return dato2;
    }

    public void setDato2(double dato2) {
        this.dato2 = dato2;
    }

    public String getOperador() {
        return operador;
    }

    public void setOperador(String operador) {
        this.operador = operador;
    }

    public double getTotal() {
        return total;
    }

    public void setTotal(double total) {
        this.total = total;
    }
   
    public double Operacion(){
        if (operador.equals("+")) {
            return total=dato1+dato2;
        }
        if (operador.equals("-")) {
            return total=dato1-dato2;
        }
        if (operador.equals("x")) {
            return total=dato1*dato2;
        }
        if (operador.equals("/")) {
            return total=dato1/dato2;
        }
       
        return 0;
    }
}

En package Controlador
Código: [Seleccionar]
public class Controlador implements ActionListener{
   
    Modelo modelo = new Modelo();
    Vista vista = new Vista();

    public Controlador(){}

    public Controlador(Vista vista, Modelo modelo) {
        this.vista= vista;
        this.modelo = modelo;
        this.vista.suma.addActionListener(this);
        this.vista.resta.addActionListener(this);
        this.vista.multiplicacion.addActionListener(this);
        this.vista.division.addActionListener(this);
        this.vista.borrar.addActionListener(this);
        this.vista.salir.addActionListener(this);
    }
   
    public void Iniciar(){
        vista.setTitle("Calculadora 100% real no Feik");
        vista.setLocationRelativeTo(null);
        vista.txt1.setText(String.valueOf(modelo.getDato1()));
        vista.txt2.setText(String.valueOf(modelo.getDato2()));
        vista.resultado.setText(String.valueOf(modelo.getOperador()));
    }

    @Override
    public void actionPerformed(ActionEvent e) {
       modelo.setDato1(Double.parseDouble(vista.txt1.getText()));
       modelo.setDato2(Double.parseDouble(vista.txt2.getText()));
        if (e.getSource() == vista.suma) {
            modelo.setOperador("+");
        }
        if (e.getSource() == vista.resta) {
            modelo.setOperador("-");
        }
        if (e.getSource() == vista.multiplicacion) {
            modelo.setOperador("x");
        }
        if (e.getSource() == vista.division) {
            modelo.setOperador("/");
        }
        if (e.getSource() == vista.borrar) {
            vista.txt1.setText("0.0");
            vista.txt2.setText("0.0");
            vista.resultado.setText("0.0");
        }
        if (e.getSource() == vista.salir) {
            System.exit(0);
        }
        vista.resultado.setText(String.valueOf(modelo.Operacion()));

    }
   
}

Y la parte visual consta de Tres textField, seis Buttoms (suma, resta. multiplicacion, division, borrar, salir)

Título: Re:Excepciones en calculadora con Interfaz gráfica (Java)
Publicado por: Ogramar en 15 de Abril 2017, 20:07
Buenas Loperso, he intentado compilar pero me indica que falta la clase Vista

En este curso hay algunos ejemplos de excepciones con Java http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=58&Itemid=180 entregas CU00926C y CU00927C

Supongo que debes definir una clase que extienda a la clase Exception, es decir, una excepción definida por el programador en lugar de una excepción predefinida Java

Este sería un ejemplo:

Código: [Seleccionar]
class ExcepcionDefinidaPorProgramador extends Exception {
   public ExcepcionDefinidaPorProgramador(String msg){
      super(msg);
   }
}

class EmployeeTest {
   static void  employeeAge(int age) throws ExcepcionDefinidaPorProgramador{
      if(age < 0)
         throw new ExcepcionDefinidaPorProgramador("La edad no puede ser menor de cero");
      else
         System.out.println("La entrada es válida!!");
   }
   public static void main(String[] args) {
       try {
            employeeAge(-2);
       }
       catch (ExcepcionDefinidaPorProgramador e) {
            e.printStackTrace();
       }
   }
}

Salu2