Partage
  • Partager sur Facebook
  • Partager sur Twitter

programme test

erreur de if/else if

Sujet résolu
    15 octobre 2008 à 16:42:07

    Bonjour, je débute en Java et je commence déja a planter sur un petit bout de programme. Je ne comprend pas mon erreur, il n'accepte pas mon "else if" pourriez-vous m'éclairer svp.merci d'avance.

    import java.util.Scanner;
    
    
    public class prg {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		String prenom = new String();
    		int Jouer = 1, Quitter = 2;
    		char reponse = ' ';		
    		Scanner sc = new Scanner(System.in);
    		
    		do
    			{
    				System.out.println("Menu:");
    				System.out.println("1 : Jouer");
    				System.out.println("2 : Quitter");
    				
    				do
    					
    				{
    					if (Jouer == 1)
    						
    						System.out.println("OK, c'est parti !!");
    						System.out.println("Quel est ton prénom ? :");
    						prenom = sc.nextLine();
    						System.out.println("Bonjour " +prenom+ ",comment vas-tu ?");
    						
    						else if (Quitter == 2)
    							
    							System.out.println("Voulez vous rejouer? O/N:");
    							reponse = sc.nextLine().charAt(0);
    							
    							
    							
    				}while(reponse != 'O' && reponse !='N');
    				
    			}while (reponse == 'O');
    		System.out.println("Au revoir");
    					
    						
    						
    						
    						
    					
    }
    	
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      15 octobre 2008 à 18:01:00

      Bonjour,

      Il faut toujours, pour des raisons de lisibilités, mettre des accolades sur les différents blocs, comme les blocs if else.

      Bon courage pour la suite,

      Corentin
      • Partager sur Facebook
      • Partager sur Twitter
        15 octobre 2008 à 18:34:57

        Salut.
        Et bien comme te l'a dit Corentin il faut mettre des accolades.
        Il faut ouvrir une accolade après le if et la fermer à la fin du if. De même pour le elseif.
        if (Jouer == 1)
        {
             System.out.println("OK, c'est parti !!");
             System.out.println("Quel est ton prénom ? :");
             prenom = sc.nextLine();
             System.out.println("Bonjour " +prenom+ ",comment vas-tu ?");
        }	
        else if (Quitter == 2)
        {
             System.out.println("Voulez vous rejouer? O/N:");
             reponse = sc.nextLine().charAt(0);
        }
        
        • Partager sur Facebook
        • Partager sur Twitter
          15 octobre 2008 à 19:42:37

          Je vous remercis, j'y penserai a l'avenir :p . je vais essayer avec les accolades.
          @+
          • Partager sur Facebook
          • Partager sur Twitter
            15 octobre 2008 à 22:58:42

            En fait, peu importe le positionnement de tes accolades.

            ceci fonctionne aussi bien
            if(condition)
            {
                instruction;
                while(condition)
                {
                      instruction;
                 }
            }
            


            que ce code :
            if(condition){
                instruction;
                while(condition){
                      instruction;
                 }
            }
            


            Que ce code :

            if(condition)
                {instruction;
                while(condition)
                     {instruction;}
            }
            


            Ce qui est vraiment important est la sémantique (les décalages lorsque tu rentre dans tes conditionnelles).

            Quant à ta question sur les else if, pour ma part je ne les utilisent jamais.
            Soit tu veux tester un nouveau composant tu refais un if, soit tu fais ton else....
            if (Jouer == 1)
            						
            						System.out.println("OK, c'est parti !!");
            						System.out.println("Quel est ton prénom ? :");
            						prenom = sc.nextLine();
            						System.out.println("Bonjour " +prenom+ ",comment vas-tu ?");
            						
            						else if (Quitter == 2)
            							
            							System.out.println("Voulez vous rejouer? O/N:");
            							reponse = sc.nextLine().charAt(0);
            


            est la meme que :
            if (Jouer == 1)
            						
            						System.out.println("OK, c'est parti !!");
            						System.out.println("Quel est ton prénom ? :");
            						prenom = sc.nextLine();
            						System.out.println("Bonjour " +prenom+ ",comment vas-tu ?");
            						
            						else { // Si il rentre tout autre choix
            							
            							System.out.println("Voulez vous rejouer? O/N:");
            							reponse = sc.nextLine().charAt(0);
                                                            }
            


            est la meme que :
            if (Jouer == 1)
            						
            						System.out.println("OK, c'est parti !!");
            						System.out.println("Quel est ton prénom ? :");
            						prenom = sc.nextLine();
            						System.out.println("Bonjour " +prenom+ ",comment vas-tu ?");
            						
            						if (Jouer == 2) { // Pareil que le premier exemple en plus lisible
            							
            							System.out.println("Voulez vous rejouer? O/N:");
            							reponse = sc.nextLine().charAt(0);
                                                            }
            


            Bon j'ai retouché un peu ton code en mettant en commentaire des zone qui pour moi ne doivent etre corrigés que par toi. Car je pense que personne n'a du le lire pour que personne ne fasse de commentaire.

            import java.util.Scanner;
            
            
            public class prg {
            	public static void main(String[] args) {
            
            		String prenom = new String();
            		int Jouer = 1; // Pourquoi utiliser Quitter sachant que si jouer != 1 alors tu quite ton programme ?
            		char reponse = ' ';		
            		Scanner sc = new Scanner(System.in);
            		
            		do{	//Afficher un menu
            			System.out.println("Menu:");
            			System.out.println("1 : Jouer");
            			System.out.println("2 : Quitter");
            			do{ // Je rentre dans une boucle qui prendra fin si le joueur ne souhaite pas rejouer.
            				if (Jouer == 1){ // Il joue sans choisir jouer dans le menu ?
            					System.out.println("OK, c'est parti !!");
            					System.out.println("Quel est ton prénom ? :");
            					prenom = sc.nextLine();
            					System.out.println("Bonjour " +prenom+ ",comment vas-tu ?");
            					System.out.println("Voulez vous rejouer? O/N:");
            					reponse = sc.nextLine().charAt(0);
            				} else { // SI il à repondu autre chose que rejouer.... ou si il à choisi de partir depuis le menu.
            					reponse = 0	// Inutile de lui demander de rejouer si il souhaite quitter
            			}while(reponse != '0' && reponse !='N'); 	// Donc pour sortir il faut que reponse soit égal à 0 ET N ?? ca va etre dur
            		}while (reponse == '0');				
            		
            		System.out.println("Au revoir");
            	}
            }
            


            Essaye aussi de coder en français pour comprendre ce que va faire ton programme :

            ex :
            Si ma variable jouer vaut 1 alors je fais :
                  afficher un menu présentant les différentes options possible
                  demander à l'utilisateur un choix.
                  Si il à demandé l'option 1 alors
                         faire .....
                  Fin de si
            fin de si
            


            Et dernier conseil, ne met pas de majuscule à la premiere lettre de tes variables (comme ta variable Jouer).
            Ca pourrait porter à confusion avec les classes qui commences elles par une majuscule.
            je t'assure que ca t'aidera beaucoup :)
            • Partager sur Facebook
            • Partager sur Twitter
              16 octobre 2008 à 10:46:50

              Merci beaucoup Cryosore d'avoir pris le temps de m'expliquer, j'ai bien compris cette fois si.
              Je vais le refaire tout seul afin d'etre sure d'avoir tout saisi.

              Merci encore...

              • Partager sur Facebook
              • Partager sur Twitter

              programme test

              × 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