Comment lancer une exception en interface

Résolu
Bonjour, Tout d'abort,je remercie tout ceux qui oeuvre pour que nous debutant en programmation puissions apprendre mieux ce que nous aimons de tout coeur :la programmation.Le fait de recevoir dans un bref delai la reponse aux peoccupation est un fait à saluer.
Encore merci !

VOICI LE PROGRAMME QUE J'AI ECRIS EN CLASSE ABSTARCT

LA SOMME

package calculadoraabstract;

public class Sumar extends Calculadora{

public Sumar(int x,int y,double Resultado) {
super(x,y,Resultado);
}
public double getResultado() {
return (x+y);
}

public void setX(int i) {
throw new UnsupportedOperationException("Not yet implemented");
}

}

LA SOUSTRACTION

package calculadoraabstract;

public class Restar extends Calculadora{

public Restar(int x,int y,double Resultado) {
super(x,y,Resultado);
}
public double getResultado() {
return (x-y);
}

}

LA DIVISION

package calculadoraabstract;

public class Dividir extends Calculadora{
// private int y;
public Dividir(int x,int y,double Resultado) {
super(x,y,Resultado);
}
public void sety(int y)throws Exception {
if(y<=0)throw new Exception("El divisor Y tiene que ser mayor que cero");
this.y=y;
}

public double getResultado() {
return (x/y);
}

}

LA MULTIPLICATION

package calculadoraabstract;

public class Multiplicar extends Calculadora{

public Multiplicar(int x,int y,double Resultado) {
super(x,y,Resultado);
}
public double getResultado() {
return (x*y);
}

}
LA CLASSE ABSTRACT CALCULADORA

package calculadoraabstract;

public abstract class Calculadora {
public int x;
public int y;
private double Resultado ;
private static int Operaciones;
/** Creates a new instance of Calculadora */
public Calculadora(int x,int y,double Resultado)/* throws Exception */{
this.Resultado=Resultado;
// if(y<=0)throw new Exception("El divisor Y tiene que ser mayor que cero");
this.x=x;
this.y=y;
this.Operaciones=Operaciones;
Operaciones++;
}
/** Creates a new instance of Calculadora */
public Calculadora(int x,double Resultado) {
this.Operaciones=Operaciones;
this.Resultado=Resultado;
this.x=x;
Operaciones++;
}
public int getX(){
return x;
}
public void sety(int y)throws Exception {
if(y<=0)throw new Exception("El divisor Y tiene que ser mayor que cero");
this.y=y;
}
public int getY(){
return y;
}
public int getOperaciones(){
return Operaciones;
}
public abstract double getResultado();

}

LA CLASSE DU TEST

package calculadoraabstract;

public class Main {

public Main() {
}

public static void main(String[] args) {

Calculadora C1=new Sumar(80,130,58.0);
Calculadora C2=new Restar(45,15,14.0);
Calculadora C3=new Multiplicar(125,100,125.0);
Calculadora C4=new Dividir(50,11,12.0);

imprimir(C1);
imprimir(C2);
imprimir(C3);
imprimir(C4);

}

private static void imprimir(Calculadora C) {
// throw new UnsupportedOperationException("Not yet implemented");

System.out.println("El valor de Y es : "+C.getX()+" .El valor de Y es :"+C.getY());

if(C instanceof Sumar){
Sumar C1=(Sumar)C;
System.out.println("El resultado de la Suma es: "+C1.getResultado());
}else if(C instanceof Restar) {
Restar C2=(Restar)C;
System.out.println("El resultado de la Sustraccion es: "+C2.getResultado());
}else if(C instanceof Multiplicar) {
Multiplicar C3=(Multiplicar)C;
System.out.println("El resultado del Producto es: "+C3.getResultado());
}else if(C instanceof Dividir ) {
try{
Dividir C4=(Dividir)C;
System.out.println("El resultado de la division es: " +C4.getResultado());
}catch (Exception e){
System.out.println(e.getMessage());
}
}
System.out.println("El numero de Operaciones es :"+C.getOperaciones());
}
}

2 réponses

  1. Euh, je ne comprends pas tout à fait la logique que tu mets en place mais ce n'est pas grave pour moi au moins dans ta classe Calculadora la méthode devrait être :
    public abstract double getResultado() throws UnsupportedOperationException;

    Simplement pour indiquer que la méthode getResultado peut quelque fois soulever une exception.

    Ceci dit, pourquoi est-ce que tu doit fournir un Resultado à ton constructeur ... ?
    1. Merci à tous ceux qui m'ont aidé et qui aident d'autres personnes en difficulté pour resoudre leurs probleme.
      J'ai donc pu lance l'Exception de la maniere suivante :

      public abstract getResultado() throws Exception ;
      C'est dans la classe abstract Resutado que je devais lancer l'exception et non dans
      public void setY ( int y) throws Exception {
      if ( y< = 0)throw new Exception ("La valeur de Y doit etre superieure à Zero");