Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boucle et condition. for if else

    27 avril 2016 à 17:52:58

    Bonjour, 

    J'ai beau lire tout les tutos que je peux trouver sur le net j'ai du mal à comprendre comment fonctionne les boucle et les conditions et du coup l'adapter a mon exercice :

    exemple : 

    import java.util.Scanner; 
    public class Etoile { 
        public static void main(String[ ] args) { 
    		int reponseUser, i;
    		String etoiles;
    		etoiles = "";
    		Scanner sc = new Scanner(System.in);
    		System.out.println("Combien d'etoiles pour votre carre ?");
    		reponseUser = sc.nextInt();
    			
    			// Construction d'une ligne
    			for (i=0; i < reponseUser; i++){
    			etoiles = etoiles + "*";
    			}
    			
    			// Construction du carré
    			for (i=0; i < reponseUser; i++){
    			System.out.println(etoiles);
    			}
    					
    	} 
    } 

    L'exercice qui m'est demandé est de faire des carré vide type 

    *****
    *     *
    *     *
    *     *
    ***** 

    Donc la première ligne et la dernière ligne pleine et les autre juste une étoile dans la  première et dernière case.
    Mais je ne comprends vraiment pas par quoi commencer.

    Merci de bien vouloir m'éclairer :/ 

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 avril 2016 à 20:54:44

      Bonjour,

      Voilà pour t'aider, je l'ai écrit en Groovy pour que ça soit plus rapide, essaies maintenant de t'en inspirer pour le réécrire en Java ! :)

      Integer dimensions = new Integer(10)
      
      creerCarre(dimensions)
      
      void creerCarre(final dimensions)
      {
          assert dimensions in Integer : "dimensions n'est pas un entier"
          
          int i = 0
          while(i < dimensions)
          {
              if(i == 0 || i == dimensions-1)
              {
                  tracerSegmentPlein(dimensions)
              }
              else
              {
                  tracerSegmentVide(dimensions)
              }
              
              i++
          }
      
      }
      
      void tracerSegmentPlein(final dimensions)
      {
      
          int i = 0
          char[] segment = new char[dimensions]
          while(i < dimensions)
          {
              
              segment[i] = '*'
              
              i++
          }
          
          println segment
      
      }
      
      void tracerSegmentVide(final dimensions)
      {
          int i = 0
          char[] segment_vide = new char[dimensions]
          while(i < dimensions)
          {
              if(i == 0 || i == dimensions-1)
              {
                  segment_vide[i] = '*'
              }
              else
              {
                  segment_vide[i] = ' '
              }
              
              i++
          }
          println segment_vide
      }

      Bon courage !

      PS: résultat:

       
      **********
      *        *
      *        *
      *        *
      *        *
      *        *
      *        *
      *        *
      *        *
      **********




      -
      Edité par Anonyme 27 avril 2016 à 20:56:03

      • Partager sur Facebook
      • Partager sur Twitter
        28 avril 2016 à 13:05:33

        Merci je vais essayer de l'adapter je tiens au jus :)
        • Partager sur Facebook
        • Partager sur Twitter
          28 avril 2016 à 15:11:10

          Réfléchit à comment est-ce-que tu ferais pour 'dessiner' ce carré à la console, reproduit le mouvement avec les boucles.

          Si tu veux faire un carré à 5 lignes, la première ligne tu insérera 5 étoiles puis tu passeras à la ligne suivant. pour la 2/3/4e, ce sera une étoile, 3 espaces, une étoile, et tu passe à la ligne suivante.

          Etc ...

          • Partager sur Facebook
          • Partager sur Twitter
            1 mai 2016 à 11:38:33

            Bonjour merci pour vos conseil, j'ai fais ça..

            import java.util.Scanner;
            public class Etoile {
            public static void main(String[] args) {
             
              Scanner name = new Scanner(System.in);
              System.out.println("Entre ton prénom");
              String prenom = name.nextLine();
              System.out.println("Bonjour " +prenom+ ", combien veux-tu d'étoiles dans le carré ?");
              int nbr = name.nextInt();
              int i;
              String etoiles = "";
              String espace = "";
               
               for (i = 0; i < nbr; i++)
               
               {
               etoiles = etoiles + "*";
               }
               for (i = 0; i < nbr-2; i++)
               
               {
               espace = espace + " ";
              }
             
              for(i=0; i<nbr; i++) {
                  if(i==0 || i==nbr-1)
                  {System.out.println(etoiles);}
                  else {System.out.println("*" +espace+ "*");}
              }
             }
            }

            • Partager sur Facebook
            • Partager sur Twitter
              1 mai 2016 à 13:21:49

              Bonjour Robert08Adn,

              Moi j'utiliserai un tableau multidimensionnels pour résoudre ton exercice.

              import java.util.Scanner;
              
              public class Main {
              
              	public static void main(String[] args) {
              		String etoiles[][];
              		int repUser;
              		Scanner clavier = new Scanner(System.in);
              		
              		System.out.println("Combien veux-tu d'étoiles dans le carré ?");
              		repUser = clavier.nextInt();
              		etoiles = new String[repUser][repUser];
              		
              		for(int i = 0; i < etoiles.length; i++){
              			//Première ligne du tableau
              			etoiles[0][i] = "* ";
              			
              			//Dernière ligne du tableau
              			etoiles[etoiles.length-1][i] = "* ";
              			
              			//Première colonne de la ligne
              			etoiles[i][0] = "* ";
              			
              			//Dernière colonne de la ligne
              			etoiles[i][etoiles.length-1] = "* ";
              			
              			//Les espaces
              			for(int j = 0; j < etoiles.length; j++){
              				if(etoiles[i][j] == null){
              					etoiles[i][j] = "  ";
              				}
              			}
              		}
              		
              		//Afficher le tableau
              		for(int i = 0; i < repUser; i++){
              			for(int j = 0; j < repUser; j++){
              				System.out.print(etoiles[i][j]);
              			}
              			System.out.println();
              		}	
              		clavier.close();
              	}
              }



              -
              Edité par The Red Corsair Pirate 1 mai 2016 à 13:37:21

              • Partager sur Facebook
              • Partager sur Twitter
                1 mai 2016 à 14:58:14

                Yes je vois qu'il y a plein de façon d'obtenir le meme resultat, perso c'est un peu encore trop technique pour moi cette version tableau.
                • Partager sur Facebook
                • Partager sur Twitter
                  1 mai 2016 à 15:11:01

                  J'ai essayé un autre exercice  :
                   
                  import java.util.*;
                  public class Jeu {
                      public static void main  (String [] args)
                      
                      {
                  //      double nbr = (int)(Math.random()* 100);
                          int nbrUser,nb,i;
                          Random rand = new Random();
                          nb = rand.nextInt(100);
                          System.out.println(nb);  // petite aide pour tester le jeu
                          
                          Scanner sc = new Scanner(System.in);
                          System.out.println("Ici se cache un nombre entre 0 et 100 \nDevienne quel est ce nombre :-)");
                          nbrUser = sc.nextInt();
                             
                          for (i=2; nbrUser !=nb;i++) {     // i = 2 pour le compteur
                          
                          if (nbrUser<0 || nbrUser>100)
                          {System.out.println("On a dit entre 0 est 100");
                          nbrUser = sc.nextInt();}
                          else if (nbrUser<nb)
                          {System.out.println("Plus grand");
                          nbrUser = sc.nextInt();
                          } 
                          else if (nbrUser>nb)
                          {System.out.println("Plus petit");
                          nbrUser = sc.nextInt();}
                          
                          else {System.out.println("Bonne réponse ;-) Réponse trouvé en " +i+ " coup");}  //compteur
                          
                          }}
                    
                          }
                      
                          
                  Mon problème est que je sors de la boucle avant qu'il me dise que c'est la bonne réponse :/

                  -
                  Edité par Robert08Adn 1 mai 2016 à 15:17:18

                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 mai 2016 à 15:38:35

                    Salut,

                    tu ne peut pas utilisé une boucle for, pour une boucle à durée indéterminée. Tu ne sais pas au bout de combien de temps l'utilisateur aura saisie la bonne réponse. Pour cela, il y a les boucles while.

                    Pour ton exercice ce serait 

                    while (nb != nbUser) {
                       // ton code...
                    }



                    • Partager sur Facebook
                    • Partager sur Twitter
                    Cordialement, Fulash
                      1 mai 2016 à 16:42:11

                      Merci le fait d'échanger m'aide à avancer :p

                      import java.util.*;
                      public class Jeu {
                          public static void main  (String [] args)
                          
                          {
                      //      double nbr = (int)(Math.random()* 99+1);
                              int nbrUser,nb;
                              int i = 0;
                              Random rand = new Random();
                              nb = rand.nextInt(100);
                              System.out.println(nb);
                              
                              Scanner sc = new Scanner(System.in);
                              
                              System.out.println("Ici se cache un nombre entre 0 et 100 Devienne quel est ce nombre :-)");
                                              
                              do {
                              System.out.println("Entre un nombre");
                              nbrUser = sc.nextInt();
                              i++;
                              
                              if (nbrUser == nb) {System.out.println("Bonne réponse ;-) Réponse trouvé en " +i+ " coup");}
                              else if (nbrUser<0 || nbrUser>100)
                              {System.out.println("On a dit entre 0 est 100");
                              }
                              else if (nbrUser<nb)
                              {System.out.println("Plus grand");
                              } 
                              else if (nbrUser>nb)
                              {System.out.println("Plus petit");
                              }
                              }           
                              while (nbrUser != nb);
                          }
                      }
                      

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Boucle et condition. for if else

                      × 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