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 :

Souci sur boucle et la variable f


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Militaire
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Militaire
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Souci sur boucle et la variable f
    Bonjour,
    Je voudrais lancer un calcule automatique et faire afficher les résultats, malheureusement quand je le lance je n'ai qu'une seul ligne qui s'affiche et la boucle ne prend pas fin, un peu comme si la variable f n’étant jamais incrémenter
    ou comme si elle reprenez la valeur de zéro.


    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
    public class Atchoom { 
     
        public static void main(String[] args) { 
     
            //x=nbr(s) de caps u=prix du ou des caps(s) b=le reste 
            //f=nbr(s) de semaine(s) b1=reste du calcule precedent 
     
            double x = 10; double b = 0; double u = 0; double f=0; 
            double g,y,b1; 
            do { 
                g = (x*2.13); 
                y = (g+b); 
                while (y>25) { 
                    u=u+25; 
                    x++; 
                } 
                b1 = b; 
                b = (y-u); 
                f++; 
                System.out.println("Semaine "+f+" : "+x+" x 2.13 = "+g+" + "+b1+" = "+y+" - "+u+" = "+b); 
                System.out.println(f); 
            } while  (f<4) ; 
            System.out.println("Fin"); 
        } 
    }

    Merci pour votre aide !!!

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il y a un problème avec cette boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (y>25) { 
        u=u+25; 
        x++; 
    }
    Si y <= 25, on entre pas dans la boucle, ok. Mais si y>25, on entre dans la boucle, et on en sort jamais, parce que y restera à la valeur qu'il a (rien ne le change dans la boucle), et donc restera toujours supérieur à 25.

    Ce qu'il se passe, c'est qu'à la première itération du do/while, y vaut y=21.299999999999997, donc <=25, donc on entre pas dans le while, on continue, et ça affiche :
    Semaine 1.0 : 10.0 x 2.13 = 21.299999999999997 + 0.0 = 21.299999999999997 - 0.0 = 21.299999999999997
    1.0
    
    et à la seconde itération, y=42.599999999999994, donc y>25, donc on entre dans la boucle while et on boucle infiniment.

    Ne jamais faire de condition de boucle sur des variables qu'on ne fait pas varier dans la boucle !
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Militaire
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Militaire
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Effectivement je n'avais pas vue cette erreur basique!!!

    Voici la correction:

    Merci pour votre aide !!

    J'ai donc pu réussir ce que je souhaiter.

    Résultat ici :
    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
    public class Atchoom {
     
    	public static void main(String[] args) {
     
    		//x=nbr(s) de caps  u=prix du ou des cap(s)  b=le reste
    		//f=nbr(s) de semaine(s) b1=reste du calcule precedent  
     
    		int x = 10; double b = 0; double u = 0; int f=0;
    		double g,y,g2; double y1=0; double b1=0;int x1=0; int c=0;
     
    		while(f<11) {
    			g = (x*2.13);
    			y = (g+b1);
    			x1=x;
    			if (y>25){
    				y1=y;
    				while (y>25){
    				u=u+25;
    				c++;
    				x++;
    				y=y-25;
    				b=y;
    			}
    			}
    			else{
    				y1=y;
    				b=y;
    			}
    			f++;
    			System.out.println("Semaine "+f+" : "+x1+" x 2.13 = "+g+" + "+b1+" = "+y1+" - "+u+" = "+b+" (+"+c+"caps).");
    			System.out.println();b1=b;u=0;c=0;
    		}
    		System.out.println("Fin");
    	}
    }
    Il me reste plus qu'a faire en sorte d'avoir seulement deux chiffre apres la virgule et ça sera parfait.

    Merci bien.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par PulsarFr Voir le message
    Il me reste plus qu'a faire en sorte d'avoir seulement deux chiffre apres la virgule
    Soit avec la méthode format() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.format("blahblah %.2f blahblah %.2f%n", v1, v2);
    Soit avec un DecimalFormat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DecimalFormat format = new DecimalFormat("#.00");
    System.out.println("blahblah " + format.format(v1) + " blahblah " + format.format(v2));
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Boucle sur des noms de variables
    Par Felfla dans le forum MATLAB
    Réponses: 4
    Dernier message: 23/07/2015, 10h09
  2. Boucle dont la variable peut changer sur une seule ligne ?
    Par geeka dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 15/04/2015, 10h06
  3. boucle sur checkbox avec nom variable
    Par LaMite dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/05/2014, 18h01
  4. Boucle sur un tableau de variable en SQL
    Par sekaijin dans le forum Débuter
    Réponses: 4
    Dernier message: 27/01/2010, 20h52
  5. Petit souci sur une boucle PHP
    Par ns_deux dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 30/03/2009, 20h31

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