A voir également:
- Que fais ce programme java?
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Programme demarrage windows 10 - Guide
- Jeux java itel football - Télécharger - Jeux vidéo
- A java exception has occurred ✓ - Forum Minecraft
7 réponses
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
10 janv. 2008 à 13:17
10 janv. 2008 à 13:17
Je reposte plus clairement ton programme pour y voir plus clair. Merci de faire la même chose la prochaine fois.
Et le main :
public class A{ boolean f; public A (int v1) { f=m(v1); } private boolean m(int v1) { System.out.println("A "+ v1); if (v1<0) return true; else return false; } protected int m(int v1; int v2) { System.out.printl ("A "+ v1 + " " "+ v2); if (f) return v1; else return v2; } } public classe B extends A{ public B(int v1) { super(v1); } double m(double v1, int v2) { System.out.println("B "+ v1 + " " + v2); return v1/m(v2, v2+1); } } public class C extends A{ public C(int v1, int v2) { super(v1+v2); } boolean m(int v1, double v2) { System.out.println("C" +v1 " " + v2); if (v1>v2) return true; else return false; } }
Et le main :
public static void main (String[] args { int v1 = 10, v2 = 06; B b = new B(v2); C c= new C (v1,v2); c.m(v2, b.m(1.0 , v1)); b.m(c.m(v1, v2),v1); }
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
10 janv. 2008 à 13:27
10 janv. 2008 à 13:27
Je ne sais pas ce qu'elle fait exactement mais en tout cas ton prog ne risque pas de fonctionner c'est bourré d'erreur de syntaxe.
Aussi, il y a une boucle infinie dans ton programme :
Cette fonction se rappelle elle-même sans condition d'arrêt / retour, donc ca risque de boucler à l'infinie, du moins au moins jusqu'à ce qu'une exception sur la division soit levée...
Aussi, il y a une boucle infinie dans ton programme :
double m(double v1, int v2) { System.out.println("B "+ v1 + " " + v2); return v1/m(v2, v2+1); }
Cette fonction se rappelle elle-même sans condition d'arrêt / retour, donc ca risque de boucler à l'infinie, du moins au moins jusqu'à ce qu'une exception sur la division soit levée...
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
10 janv. 2008 à 13:39
10 janv. 2008 à 13:39
Fautes de syntaxes :
Mise à part ca, je pense que ton prof n'as pas du relire correctement le programme ni même tenter de l'éxécuter pour la raison suivante :
Ta classe B hérite de la classe A. Dans la classe A tu as une méthode nommée 'm', de même dans la classe B. Généralement, le fait de redéfinir une méthode (même nom, même retour, mêmes paramètres) dans une classe fille permet de changer son comportement par rapport à la classe mère (ou une autre classe fille).
Or le problème avec ton programme c'est que tu as bien la fonction 'm' reféfinie dans la classe fille B, mais pas avec les mêmes paramètres ni le même retour, ce qui a pour conséquence de ne pas pouvoir compiler le programme puisqu'il y a ambiguité entre les deux fonctions.
public classe B extends A // Pas de 'e' à class int v1; int v2) // ';' à remplacer par ',' System.out.println("C" +v1 " " + v2); // manque un '+' juste apres v1
Mise à part ca, je pense que ton prof n'as pas du relire correctement le programme ni même tenter de l'éxécuter pour la raison suivante :
Ta classe B hérite de la classe A. Dans la classe A tu as une méthode nommée 'm', de même dans la classe B. Généralement, le fait de redéfinir une méthode (même nom, même retour, mêmes paramètres) dans une classe fille permet de changer son comportement par rapport à la classe mère (ou une autre classe fille).
Or le problème avec ton programme c'est que tu as bien la fonction 'm' reféfinie dans la classe fille B, mais pas avec les mêmes paramètres ni le même retour, ce qui a pour conséquence de ne pas pouvoir compiler le programme puisqu'il y a ambiguité entre les deux fonctions.
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
10 janv. 2008 à 13:45
10 janv. 2008 à 13:45
J'ai fais quelques modifications pour pouvoir faire tourner ton programme (renommer certaines méthodes, fautes de syntaxes corrigées, etc.). Voici le code :
J'ai fais tourner et voici ce que ca affiche :
Quans à savoir ce qu'il fait... aucune idée ^^
public class Test { public class A{ boolean f; public A (int v1) { f=m(v1); } private boolean m(int v1) { System.out.println("A "+ v1); if (v1<0) return true; else return false; } protected int m(int v1, int v2) { System.out.println ("A "+ v1 + " " + v2); if (f) return v1; else return v2; } } public class B extends A{ public B(int v1) { super(v1); } protected double mm(double v1, int v2) { System.out.println("B "+ v1 + " " + v2); return v1/m(v2, v2+1); } } public class C extends A{ public C(int v1, int v2) { super(v1+v2); } protected boolean mmm(int v1, double v2) { System.out.println("C" +v1 +" " + v2); if (v1>v2) return true; else return false; } } public void myMain ( ){ int v1 = 10, v2 = 6; B b = new B(v2); C c= new C (v1,v2); c.mmm(v2, b.mm(1.0 , v1)); b.m(c.m(v1, v2),v1); } public static void main (String[] args ) { Test myTest = new Test(); myTest.myMain(); } }
J'ai fais tourner et voici ce que ca affiche :
A 6 A 16 B 1.0 10 A 10 11 C6 0.09090909090909091 A 10 6 A 6 10
Quans à savoir ce qu'il fait... aucune idée ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
10 janv. 2008 à 13:48
10 janv. 2008 à 13:48
Faut lire :)
Le 6 octobre.
int v1 = 10, v2 = 6;
Le 6 octobre.