Pour quoi le programme s'affiche sof les zeros !!!?
amani
-
Reivax962 Messages postés 3742 Statut Membre -
Reivax962 Messages postés 3742 Statut Membre -
Bonjour, je fais se programme une classe operation a deux integer x protected et y private et une methode d'affichage ; aussi a deux classes filles addition qui faire l'addition entre x et y et remet la résultat dans l'attribut res puis l'afficher dans le main (avec l'utilisation d'un tableau de type operation) la même chose pour la classe multiplication qui faire la multiplication ; mais je sais pas pour quoi il s'affiche juste des zeros ??????? et merci .
public class Operation {
protected int x;
private int y;// y est privé alors n'est pas visible dans les classes filles alors on utilise les get et les set ;
void afficher() {
System.out.println("la valeur est " + x + "et" + getV());
}
public int getV() {
return y;
}
public void setV(int j) {
this.y = j;
}
public static void main(String[] args) {
Addition a1 = new Addition(1, 2);
Addition a2 = new Addition(2, 2);
Multiplication m1 = new Multiplication(2, 3);
Multiplication m2 = new Multiplication(4, 2);
Operation[] tab;
tab = new Operation[4];
tab[0] = a1;
tab[3] = a2;
tab[2] = m1;
tab[1] = m2;
for (int i = 0; i <= 3; i++) {
tab[i].afficher();
} // jcp pour quoi elle affiche just 0000?????!!!
}
}
public class Multiplication extends Operation {
public Multiplication(int i, int j) {
this.x = i;
this.getV().y = j;
}
int res = x * this.getV();
void afficher() {
System.out.println("la resultat de multiplication est " + res);
}
}
public class Addition extends Operation {
public Addition(int i, int j) {
this.x = i;
this.setV(j);
}
int res = x + getV();
void afficher() {
System.out.println("les resultat d'addition est " + res);
}
}Configuration: Windows / Edge 17.17134
1 réponse
-
Bonjour,
Le problème vient de ta façon de définir res.
Tu lui mets sa valeur directement dans sa définition : int res=x + getV();
Or cette ligne est appelée au tout début de la construction de l'instance de ton objet, avant que x ou y n'aient une valeur : ils valent donc 0...
Soit tu effectues le calcul directement dans le constructeur, après les assignations de x et i ;
Soit tu crées une méthode dédiée qui effectue le calcul, et qu'il faut appeler juste avant l'affichage.
Xavier