Sortir de la méthode

Résolu
helloword95 -  
 helloword95 -
Bonjour,

Dans la méthode reciterTableDeMultiplication(), j'aimerai sortir de la méthode quand l'élève donne une mauvaise réponse et renvoie le nombre de réponses correcte. J'ai fait
return nbReponseCorrecte
mais ensuite il re-continue avec une nouvelle table de multiplication au lieux de passer à l'élève suivant.

Comment faire pour qu'il passe à l'élève suivant?
Merci

	public static void main(String[] args) {
		System.out.println("Entrez le nombre d'élèves : ");
		int nbEleves = scanner.nextInt();
		int nbCorrecte = 0;
		String nomEleve = null;
		String nomGagnant;

		for (int i = 1; i <= nbEleves; i++){
			System.out.println("Elève n°" + i);
			System.out.println("Entrez son nom : ");
			nomEleve = scanner.next();
			reciterTableDeMultiplication();
			if (reciterTableDeMultiplication() > nbCorrecte){
				nbCorrecte = reciterTableDeMultiplication();
			}
		}
		System.out.println();
		nomGagnant = nomEleve;
		System.out.println("Le gagnant est " + nomGagnant);
	}
	
	public static int reciterTableDeMultiplication(){
		int nbReponseCorrecte = 0;
		int choixTable = unEntierAuHasardEntre(6, 9);

		for (int i = 1; i <= 10; i++){
			System.out.println(i + " x " + choixTable + " = ");
			int reponseEleve = scanner.nextInt();
			int reponseCorrecte = i * choixTable;
			if (reponseEleve == reponseCorrecte){
				reponseCorrecte = reponseEleve;
				nbReponseCorrecte++;
			}else{
				System.out.println("FAUX !");
				return nbReponseCorrecte;
			}
		}
		return nbReponseCorrecte;
	}




1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Bonjour,

Pourquoi tu as trois fois l'appel ?

reciterTableDeMultiplication();
if (reciterTableDeMultiplication() > nbCorrecte){
    nbCorrecte = reciterTableDeMultiplication();

À chaque fois que tu fais un appel tu relances toute la méthode, donc tu vas tout relancer trois fois, avec potentiellement trois résultats différents.

Ce qu'il faudrait c'est que tu lances une fois la méthode, que tu stockes le résultat puis que tu manipules ce résultat obtenu mais sans relancer la méthode.

int score = reciterTableDeMultiplication();
if (score > nbCorrecte){
    nbCorrecte = score;
0
helloword95
 
Merci KX, sa fonctionne mieux comme cela !
0
helloword95
 
J'ai une petite question de compréhension. Dans le code ci-dessous, pourquoi j ne s'incremente pas après ?

A la fin le chiffre 3 s'imprime 2 fois...

  for (int i=4; i<=5; i++){
   for (int j=3; j<i; j++)
    System.out.print(j);
  }
0
helloword95
 
J'ai compris enfaite ! Il recommance la boucle depuis le début
0