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

Langage Java Discussion :

Problème de boucle


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 44
    Points
    44
    Par défaut Problème de boucle
    Bonjour,

    Je poste à nouveau sur ce fourm parce que j'ai un problème concernant le while et ou placer ses accolades. Le programme suivant fonctionne si j'entre une seule donnée, mais j'aimerais exécuter ce bout de code jusqu'à ce que l'utilisateur entre -1 (J'ai réussi à le faire, donc ça ne figure pas dans le code suivant) :

    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
           if (nombreEntre > 0 && nombreEntre <= 1000000)
     
            {
                compteurNombres++;
                additionNombres = nombreEntre;
            }
     
            if (nombreEntre < 2) // Si le nombre entré est plus petit que 2
            {
                premier = false;
            }
     
            while (compteurNombrePremier * compteurNombrePremier <= nombreEntre)
            {
     
                if (nombreEntre % compteurNombrePremier == 0)
                /* Si le résultat de l'un des modulos des nombres testés = 0,
                alors il est composé */
                {
                    premier = false;
                }
                compteurNombrePremier = compteurNombrePremier + 1;
            }
     
            if (premier) // Si le nombre est premier
            {
                System.out.println(nombreEntre + " est un nombre premier");
            }
            else // Si le nombre n'est pas premier
            {
                System.out.println(nombreEntre + " n'est pas un nombre premier");
            }
     
            while (nombreEntre >= racineCarree * 2 + 1)
            {
                nombreEntre -= (racineCarree * 2 + 1);
                racineCarree++;
            }
     
     
            if (racineCarree * racineCarree != nombreEntre)
            /* Si le carré de la racine n'égale pas le nombre entré,
            alors elle est approximative */
            {
                System.out.println("La racine entière approximative est"
                        + " " + racineCarree);
                racineApprox++;
                // Le nombre de racines approximatives trouvées augmente de 1
                compteurRacines++;
            }
            else
            {
                System.out.println("La racine entière exacte est " + racineCarree);
                /* Si le carré de la racine égale au nombre entré, alors elle est
                exacte */
                racineExacte++; /* Le nombre de racines exactes trouvées
                augmente de 1 */
                compteurRacines++; // Le nombre de racines trouvées augmente de 1
            }
    Je ne sais vraiment pas où la placer. J'ai fait plusieurs essais, mais toujours le même résultat : Il reste bloqué dans une boucle infinie.

    Merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben a priori, la boucle en question doit englober
    -> Le code de calcul
    -> Le code demandant à l'utilisateur d'entrer un nombre

    et son critère de sortie doit être nombreEntre==-1

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 44
    Points
    44
    Par défaut
    J'ai ajouté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            if (nombreEntre > 0 && nombreEntre <= 1000000)
            {
     
                compteurNombres++;
                additionNombres = nombreEntre;
                while (nombreEntre > 0 && nombreEntre <= 1000000)
                {
                    System.out.println("Entrez le nombre dont vous voulez" + " extraire la racine carrée ");
                    nombreEntre = Integer.parseInt(r.readLine());
                }
            }
    au début de mon code, mais il reste pris dans la boucle et me demende toujours un nombre...

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    entre -1 et il sortira de la boucle....

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 44
    Points
    44
    Par défaut
    Merci de ton aide ça fonctionne ... mais j'ai un autre problème : à la première saisie d'un nombre, le programme me donne les bons résultats, mais plus après

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    regarde où est initialisée ta variable compteurNombrePremier. Tu devrais l'initialiser, ou la réinitialiser à 0, juste après la saisie d'un nouveau nombre. Vu que tu ne le fais pas, il va compter dans ton nouveau calcul les facteurs des précédents calculs... forcément faux.

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