Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec:"recommencer O/N"

Sujet résolu
    24 mai 2015 à 13:29:19

    Bonjour à tous,

    j'ai un petit problème sur un programme. En effet, je souhaite qu'une fois qu'il est fini d’exécuter le "switch" il propose de recommencer.

    Or à chaque fois que je lance le programme, je dois entrer 2 fois la condition pour que le "case" correspondant se lance et puis la phrase "Voulez-recommencez(O/N)" apparaît (jusque là quasi-normal mis à part le fait de devoir entrer 2 fois mon choix") puis j'ai ce message d'erreur:

    Voici le code:

    package finalproject;
    import java.util.Scanner;
    public class Compteurscore {
    
    	public static void main(String[] args) {
    		
    		Scanner sc = new Scanner(System.in);
    		char reponse=' ', mode = ' ';
    		
    		
    		
    		//interface d'accueil au lancement du programme
    		System.out.println("Bonjour et bienvenue dans le compteur de score multisports!");
    		
    		System.out.println("-----------------------------------------------------------------------");
    	
    		do{
    			
    	        do{//tant que reponse n'est pas O ou N
    		        mode = ' ';
    		        System.out.println("Choisissez le sport qui vous souhaitez scorer : -1 pour BOXE FRANCAISE");
    		        System.out.println("                                                -2 pour TENNIS");
    		        System.out.println("                                                -3 pour RUGBY");
    		        mode = sc.nextLine().charAt(0);
    		        
    		       
    			
    			}while(mode != '1' && mode != '2' && mode != '3');
    		      
    		        	int sport = sc.nextInt();
    	
    	
    			//execution du programme (compteur de score)  pour le sport demandé
    			switch (sport){		
    		
    			case 1:
    				System.out.println("Vous avez choisi compteur de score pour: Boxe");
    				//insérer le programme pour le compteur de score BOXE 
    				break;
    			
    			case 2:
    				System.out.println("Vous avez choisi compteur de score pour: Tennis");
    				//insérer le programme pour le compteur de score TENNIS
    				break;
    			
    			case 3:
    				System.out.println("Vous avez choisi compteur de score pour: Rugby");
    				//insérer le programme pour le compteur de score RUGBY
    				break;
    		
    				//si l'entrée clavier ne correspond pas à une des valeurs 1/2/3, la question est reposée
    				default:
    					System.out.println("Choisissez DEFAULT votre sport: -1 pour BOXE");
    					System.out.println("                        -2 pour TENNIS");
    					System.out.println("                        -3 pour RUGBY");
    				
    			}
    		
    		
    	
    	
    		 do{       
    		        System.out.println("Souhaitez-vous convertir une autre température ?(O/N)");
    		        reponse = sc.nextLine().charAt(0);
    		       
    		      }while(reponse != 'O' && reponse != 'N');
    		     
    		    }while(reponse == 'O');
    		    
    		  System.out.println("Au revoir !");
      
    	}
    }

    Voilà, merci d'avance pour vos réponses! :)

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2015 à 13:57:13

      Bonjour

      En fait à la ligne 24 tu demandes une nouvelle entrée au scanner pour le caster en char dans mode. L'utilisateur rentre donc une première fois '2' ( par exemple ).

      Puis à la ligne 30, tu redemandes au scanner une nouvelle entrée ( alors que je suppose que tu voulais garder la même que la précédente ? )

      Les méthodes comme sc.next(); sc.nextInt(); sc.nextLine(); demande à chaque utilisation que l'utilisateur rentre une nouvelle ligne.

      Pour pallier à ton problème, il suffit que tu fasses ton switch sur ta variable mode : 

       //int sport = sc.nextInt();
           
                  //execution du programme (compteur de score)  pour le sport demandé
                  switch (mode){    
               
                  case '1':
                      System.out.println("Vous avez choisi compteur de score pour: Boxe");
                      //insérer le programme pour le compteur de score BOXE
                      break;
                   
                  case '2':
                      System.out.println("Vous avez choisi compteur de score pour: Tennis");
                      //insérer le programme pour le compteur de score TENNIS
                      break;
                   
                  case '3':
                      System.out.println("Vous avez choisi compteur de score pour: Rugby");
                      //insérer le programme pour le compteur de score RUGBY
                      break;
               
                      //si l'entrée clavier ne correspond pas à une des valeurs 1/2/3, la question est reposée
                      default:
                          System.out.println("Choisissez DEFAULT votre sport: -1 pour BOXE");
                          System.out.println("                        -2 pour TENNIS");
                          System.out.println("                        -3 pour RUGBY");
                       
                  }

      Normalement le programme ne demandera qu'une fois l'entrée.

      Sinon, ton commentaire à la ligne 19 est faux, ce n'est pas "Tant que la réponse n'est pas 0 ou N" mais "//tant que la réponse n'est pas 1, 2 ou 3".

      En espérant que ça t'ai aidé. :)

      -
      Edité par Maxime O. 24 mai 2015 à 13:59:06

      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2015 à 14:05:48

        C'est parfait ça marche.

        Merci de ton aide :)

        • Partager sur Facebook
        • Partager sur Twitter

        Problème avec:"recommencer O/N"

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown