Sortir de la méthode

Résolu/Fermé
helloword95 - 31 mai 2017 à 11:10
 helloword95 - 31 mai 2017 à 15:41
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
31 mai 2017 à 13:11
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
31 mai 2017 à 13:54
Merci KX, sa fonctionne mieux comme cela !
0
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
31 mai 2017 à 15:41
J'ai compris enfaite ! Il recommance la boucle depuis le début
0