IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

problème de boucle


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 7
    Points
    7
    Par défaut problème de boucle
    Bonjour à tous, je m'appelle laura. Je suis débutante en Java, j'ai commencé les cours au CNAM il y a 1 mois. J'ai un tp à faire qui consiste à afficher une forme en fonction du choix de l'utilisateur, caractère l : ligne, caractère r : rectangle plein et caractère t, triangle rectangle. La taille de la forme et la symbole utilisé pour la forme doit être renseignés par l'utilisateur. (mais dans l'intitulé il demande également à l'utilisateur de rentrer la forme). Le nombre de lignes de la forme est égal au nombre de colonne. On doit également demander à l'utilisateur si il veut continuer. J'ai écris un code mais cela ne me renvoie rien, et quand on demande de continuer, cela me met en continue la question. J'ai eu beau chercher sur internet, je suis bloqué. Je ne cherche pas la réponse mais au moins quelqu'un pourrait me dire ou je me trompe? Je sais que mon code n'est pas bon mais j'ai du mal à comprendre pourquoi. :?

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    import java.util.Scanner;
    public class TpFormes {
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		int taille, symboleLigne, symboleColonne;
    		char symbole, forme; 
     
    		char continuer;
     
    		taille = symboleLigne = symboleColonne = 0;
     
    		Scanner entree;
     
    		entree = new Scanner (System.in);
     
    		System.out.print ("entrez la taille de la forme :");
    		taille = entree.nextInt();
     
    		System.out.print ("entrez le symbole à utiliser :");
    		symbole = entree.next(".").charAt(0);
     
    		System.out.print ("entrez la forme :");
    		forme = entree.next(".").charAt(0);
     
    		continuer = 'o';
     
    		do
    		{
    			switch (symbole)
    			{
    			case 'l' :  for (symboleLigne = 0; symboleLigne<taille; symboleLigne++);
    							System.out.print(symbole);
    					break;
     
    			case 't' : for (symboleLigne = 0; symboleLigne<taille; symboleLigne++) 
    							for (symboleColonne = 0; symboleColonne<symboleLigne; symboleColonne++);
    									System.out.print(symbole);
    									System.out.println("");
    					break;
    			case 'r' : for (symboleLigne = 0; symboleLigne<taille; symboleLigne++)
    							for (symboleColonne = 0; symboleColonne==symboleLigne; symboleColonne++);
    									System.out.print(symbole);
    									System.out.println(" ");
    					break;
     
    			} 
     
    			System.out.println("Voulez vous continuer o/n?");
    			entree.next(".").charAt(0);
    			}
     
    		while (continuer == 'o');
     
     
     
     
     
    		entree.close();
    		}		
    	}
    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Bonjour,

    Vous posez la question de savoir si il faut continuer et lisez la réponse mais n'en faite rien...

  3. #3
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par BettyBlu3 Voir le message
    J'ai écris un code mais cela ne me renvoie rien, et quand on demande de continuer, cela me met en continue la question.
    Bonjour,

    Effectivement il y a quelques éléments à corriger. J'ai repris le code de la boucle :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
            do
            {
                switch (forme) // on utilise 'forme' et pas 'symbole'
                {
                case 'l' :  for (symboleLigne = 0; symboleLigne<taille; symboleLigne++) {
                                System.out.print(symbole);
                            }
                        break;
     
                case 't' : for (symboleLigne = 0; symboleLigne<taille; symboleLigne++) { 
                                for (symboleColonne = 0; symboleColonne<symboleLigne; symboleColonne++) {
                                        System.out.print(symbole);
                                }
                                System.out.println(" ");
                            }
                        break;
                case 'r' : for (symboleLigne = 0; symboleLigne<taille; symboleLigne++) {
                                for (symboleColonne = 0; symboleColonne<=symboleLigne; symboleColonne++) {
                                        System.out.print(symbole);
                                }
                                System.out.println(" ");
                            }
                
                        break;
     
                default: System.out.println("Oups : symbole non reconnu : "+Character.toString(symbole)); // la clause default est bien utile dans les switchs
                } 
     
                System.out.println("Voulez vous continuer o/n?");
                continuer = entree.next(".").charAt(0); // il faut lire la valeur
                }
     
            while (continuer == 'o');
    La valeur lue en dernier n'étant pas réaffectée à la variable continuer, la valeur de cette dernière ne changeait pas et donc le while bouclait sans fin.
    Le switch utilisait "symbole" et non "forme" : les tests ne pouvaient pas fonctionner. Enfin, les boucles for ne servaient à rien car ne contenaient aucun code. En Python on peut indenter sans accolades, en Java l'indentation est nécessaire pour le développeur mais les blocs de code sont définis par les accolades.
    En bref, quelques défaut de débutant mais on a vu pire sur ce forum. Le code est bien présenté, compile, donc largement au-dessus de la moyenne de pas mal de codes postés ici !

    Bienvenue dans la communauté des développeurs !

    [EDIT] Attention, il reste des points à corriger.

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    très bien, merci pour vos éclaircissement.
    Maintenant ce que je n'arrive pas à comprendre c'est pourquoi ma boucle ne fonctionne pas (j'ai bien mis les accolades entre les instructions). le symbole ne s'affiche qu'une fois
    Et quand on demande continuer, ca repose juste la question si on veut continuer.
    Je vais essayer de voir sur internet des cours sur les boucles car dans les exemples donnés, c'est du genre : for (int i = 0; i < variable donnée; i++)
    alors moi je dois faire une boucle pour concaténer des char et ca je n'arrive pas à l'intéger.
    J'ai essayé de reprendre à zéro mais je bloque pour l'affichage d'un certains nombre de fois le symbole demandé.
    En fait la ou je bloque c'est quand l'expression qui doit être : i<taille => ce sont des entiers alors que moi c'est un char.

    21
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    int taille, nbrLigne, nbrColon;
    		char caractere, symbole;
    		String forme;
    		char continuer;
     
    		taille = 0;
    		continuer = 'o';
     
    		Scanner entree = new Scanner (System.in);
     
    		System.out.print("entrez la taille de la forme : ");
    		taille = entree.nextInt();
     
    		System.out.print("entrez le symbole à utiliser : ");
    		symbole = entree.next().charAt(0);
     
    		System.out.println("Entrez la forme : ");
    		entree.nextLine();
    		forme = entree.nextLine();
    		caractere = forme.charAt(0);
     
     
    	switch (caractere)
    	{
    	case 'l' : caractere = '~'; 
    		for (symbole = 0; symbole<taille; symbole++);
    		System.out.print();
    	}

  5. #5
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par BettyBlu3 Voir le message
    Et quand on demande continuer, ca repose juste la question si on veut continuer.
    Exact. A quel endroit du code sont posées les questions sur les paramètres voulus par l'utilisateur ? Dans le do while ou en dehors ?


    Citation Envoyé par BettyBlu3 Voir le message
    Je vais essayer de voir sur internet des cours sur les boucles car dans les exemples donnés, c'est du genre : for (int i = 0; i < variable donnée; i++)
    alors moi je dois faire une boucle pour concaténer des char et ca je n'arrive pas à l'intéger.
    J'ai essayé de reprendre à zéro mais je bloque pour l'affichage d'un certains nombre de fois le symbole demandé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        switch (caractere)
        {
        case 'l' : caractere = '~'; 
            for (symbole = 0; symbole<taille; symbole++);
            System.out.print();
        }
    Dans ce switch, c'est maintenant "caractere" qui est testé au lieu de "forme" ? Là encore, le for se termine par ';' et le print() n'affiche rien si on ne lui précise pas ce qu'il doit afficher.

    Un conseil : on dirait qu'il faut revoir un concept à la fois. Il ne faut pas griller les étapes. Il existe des cours et tutoriels sur développez pour ça.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    En fait ce que j'aimerais savoir c'est comment fait on pour multiplier un char par un nombre entier
    ex : j'ai un symbole char = *
    j'indique un nombre taille = 5.
    Comment afficher 5 fois * ??
    comment faire pour que ma forme ait le nombre indiqué de symbole?
    en sachant que la taille et le symbole sont des données à rentrer par l'utilisateur.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Cincinnatus Voir le message
    Exact. A quel endroit du code sont posées les questions sur les paramètres voulus par l'utilisateur ? Dans le do while ou en dehors ?
    Dans le do while

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bon et bien voila, j'ai réussi mon exercice, mais je ne sais pas trop comment j'ai fait
    j'ai testé des trucs et ca marchait

    j'ai juste à régler le problème du voulez vous continuer.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 7
    Points
    7
    Par défaut afficher des formes avec des boucles
    Au cas ou je poste mon résultat, ca pourrait en aider certains. Notamment pour une boucle de recommencer le code et de faire des formes de carrés ou triangle vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    public class TestCalc {
     
    	public static void main(String[] args) {
     
    		int taille = 0;
    		int l = 0;
    		int c = 0;
    		char symbole;
    		char forme;
    		char continuer = ' ';
     
    		Scanner entree = new Scanner (System.in);
     
    		do
    		{
     
    		System.out.print("entrez la taille de la forme : ");
    		taille = entree.nextInt();
     
    		System.out.print("entrez le symbole à utiliser : ");
    		symbole = entree.next().charAt(0);
     
     
    		System.out.print("Entrez la forme : ");
    		forme = entree.next().charAt(0);
     
     
    			switch (forme)
    			{
    			case 'l' :   for ( l = 0; l < taille; l++)
    						{
    							System.out.print(symbole);
    						}
    						{
    							System.out.println(" ");
    						}
    			break;
    			case 't' : for ( l = 0; l < taille; l++)
    		{
    					for (c = 0; c < l ; c++)
     
    					if ( l == 0 || l == taille -1 || c == 0 || c == l -1 )
    					{
    						System.out.print(symbole);
    					}			
    					else
    					{
    						System.out.print(" ");
    					}
    					{
    							System.out.println();
    					}
     
    		}
    			break;
    			case 'r' : for ( l = 0; l < taille; l++)
    			{
    						for (c = 0; c < taille; c++)
    						{
    							System.out.print(symbole);
    						}
    						{
    							System.out.println();
    						}
    			}
    			break;
    			default : System.out.println ("insertion symbole non autorisé");
    			}
     
    			do
    			{
    			System.out.println ("voulez vous recommencer? o/n : ");
    			continuer = entree.next().charAt(0);
    			} while (continuer != 'o' && continuer != 'n');
     
     
    		} while (continuer == 'o');
    		System.out.println("fin du programme");
    		entree.close();			
     
    				}
    			}
    Merci à ceux qui ont pris le temps de me lire. et de répondre.

  10. #10
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Je vois que ma question "A quel endroit du code sont posées les questions sur les paramètres voulus par l'utilisateur ? Dans le do while ou en dehors ?" a trouvé son utilité.
    Il fallait effectivement déplacer le code correspondant dans le do/while. Mais j'ai remarqué qu'on se souvient plus de la solution qu'on trouve soi-même.

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    oui merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  3. Problème de boucle
    Par TheUltimaSephiroth dans le forum C
    Réponses: 8
    Dernier message: 10/10/2005, 13h58
  4. Problème de boucle
    Par Louis-Guillaume Morand dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/09/2005, 09h10
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo