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 :

Programme qui s'arrête au mileu


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut Programme qui s'arrête au mileu
    Bonjour,
    débutant en java j'essaye de faire un simple exo sur les boucles do while qui pose trois question , le début fonctionne bien mais le script semble se bloquer après la réponse à la première question
    La partie un est ok mais ensuite rien ne s'affiche ça n'affiche pas la deuxième demande d'entrée au clavier ( partie 2 )

    il devrait au moins afficher les system.out print PARTIE 1 et PARTIE 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.out.println("\n====---- PARTIE 2 ----====");
    mais rien ne s'affiche

    voila le 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
    import java.util.Scanner;
    import java.text.DecimalFormat;
     
    public class Population {
        public static void main(String[] args) {
     
            DecimalFormat df = new DecimalFormat("#0.000");
            Scanner keyb = new Scanner(System.in);
     
            int anneeInitiale = 2011;        // annee initiale
            double tauxCroissance = 1.2;     // taux de croissance, en %
            double populationInitiale = 7.0; // population initiale, en milliard d'humains
     
            double populationCourante = populationInitiale; // population mondiale pour l'annee courante
            int anneeCourante = anneeInitiale;              // annee de calcul
     
            System.out.println("====---- PARTIE 1 ----====");
            System.out.println("Population en " + anneeCourante + " : " + df.format(populationCourante));
     
            /*******************************************
             * Completez le programme a partir d'ici.
             *******************************************/
     
            // ===== PARTIE 1 =====
    		// utilisez cette instruction pour poser votre question :
            int anneFinale;
            double populationFinale;
            int nombreAnnee ;
           do {
            	System.out.print("Quelle année (> " + anneeInitiale + ") ? ");
          	anneFinale = keyb.nextInt();
            	nombreAnnee = anneFinale - anneeInitiale;
           }while (anneFinale < anneeInitiale);
     
          populationFinale = populationInitiale*(Math.exp(nombreAnnee*(tauxCroissance/100)));
     
          System.out.println("Population en "+anneFinale+" :"+df.format(populationFinale));
     
     
            // ===== PARTIE 2 =====
           Scanner keyb2 = new Scanner(System.in);	
           double populationCible;
            populationCible = keyb2.nextDouble();
            System.out.println("\n====---- PARTIE 2 ----====");
     
            do{
           	System.out.print("Combien de milliards (> " + populationInitiale + ") ? "); 
            } while (populationCible<populationInitiale);
     
    System.out.println("\FAIRE DEUXIÈME CALCUL ICI");
     
            // ===== PARTIE 3 =====
            System.out.println("\n====---- PARTIE 3 ----====");
     
     
     
            /*******************************************
             * Ne rien modifier apres cette ligne.
             *******************************************/
        }
    merci pour l'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 : 55
    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,

    Si ton programme s'arrête avant d'afficher ====---- PARTIE 2 ----====, c'est parce qu'il attend que tu entres un nombre (populationCible = keyb2.nextDouble()), mais c'est difficile de le voir parce que tu n'affiches pas de question (La question est posée dans la boucle do/while juste après, qui, elle est infinie, puisqu'aucune des variables testées dans la condition ne varie dans la boucle).

    Le code devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    System.out.println("\n====---- PARTIE 2 ----====");
     
    do{
           	System.out.print("Combien de milliards (> " + populationInitiale + ") ? "); 
    populationCible = keyb2.nextDouble();
    } while (populationCible<populationInitiale);

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    Bravo drigo !
    c'est cette ligne que j'ai bougé et qui faisait que ça ne fonctionnait plus.
    preuve que je n’ai pas encore assimiler toutes les subtilités du mécanisme des boucles conditionnelles

    encore merci

    ps : juste une question subsidiaire ; à cette entrée au clavier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    populationCible = keyb2.nextDouble();
    si j'entre un double avec une virgule ( 8,5 par exemple ça marche) le programme continue son déroulement normal
    par contre si j'entre un point ( 8.5 par exemple ) il m'affiche une erreur et stop l’exécution
    est ce une question de charset ?

  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 : 55
    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 serna Voir le message
    est ce une question de charset ?
    Plutôt une question de locale. Avec keyb2.useLocale(Locale.US); tu pourras saisir tes nombres avec le point.

    D'ailleurs, à propos du Scanner, crée uniquement une seule instance : déjà il est inutile d'en avoir une pour l'année et une pour la population cible, mais d'une manière général, le Scanner consommant le buffer source, il est déconseillé d'en avoir plusieurs qui partage le même buffer, parce qu'ils peuvent être conflit (si un lit des caractères dans le buffer, l'autre manquera ces caractères).

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

Discussions similaires

  1. Programme qui s'arrête sur un BufferedReader
    Par Ceubex dans le forum Général Java
    Réponses: 5
    Dernier message: 14/09/2014, 13h23
  2. Réponses: 6
    Dernier message: 09/03/2011, 14h16
  3. Programme qui s'arrête sans se terminer
    Par tnarol dans le forum C++
    Réponses: 0
    Dernier message: 30/12/2008, 18h16
  4. [LG]Programme qui n'affiche rien
    Par ousunas dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2004, 20h38
  5. Recherche programme qui convertit les chiffres arabes en nb
    Par oli57 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/06/2002, 04h11

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