Condition avec un string dans une boucle while
Fermé
linquisiteur
-
Modifié par linquisiteur le 20/08/2013 à 19:14
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 21 août 2013 à 13:43
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 21 août 2013 à 13:43
4 réponses
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
20 août 2013 à 19:19
20 août 2013 à 19:19
Il faut faire attention quand on mélange les nextInt et les nextLine sur System.in en effet nextInt ne prends pas toute la ligne, or on a appuyé sur Entrée, donc le saut de ligne reste coincé dans le flux. Il faut l'évacuer avec un nextLine sinon c'est le prochain nextLine qui le fera (du coup on ne pourra pas lire le "fin")
Remarque : plutôt que de répéter les instructions avant et pendant la boucle while, tu peux faire une boucle do while.
Remarque : plutôt que de répéter les instructions avant et pendant la boucle while, tu peux faire une boucle do while.
System.out.println("Entrez les scores des participantes. Terminez l'enregistrement avec fin"); do { System.out.println("Entrez le nom du candidat"); nom = sc.nextLine(); System.out.println("Entrez son score"); score = sc.nextInt(); sc.nextLine(); // évacue la fin de ligne ch.ajouterScore(nom, score); } while(!nom.equals("fin"));
Merci beaucoup , oui je n'ai plus d'erreur dans cette partie du code mais par contre comment puis-je lire mes toString?
Re bonjour :)
Désoler j'ai encore un problème mon ch.toString() ne fonctionne pas pourtant je ne vois pas le problème...
Je poste tout par précaution mais le plus important est le main et la dernière procédure de Concour. Pourquoi lorsque je l'appelle je ne peux pas la lire (rien ne s'affiche)
J'aimerai vérifier toute les fonctions que j'ai coder... Mais sans pouvoir lire les données c'est problématique ^^'
Merci d'avance (P.S pas besoin de lire tout j'ai poster la totalité du code si l'erreur vient de plus loin..")
l'output:
le main
Désoler j'ai encore un problème mon ch.toString() ne fonctionne pas pourtant je ne vois pas le problème...
Je poste tout par précaution mais le plus important est le main et la dernière procédure de Concour. Pourquoi lorsque je l'appelle je ne peux pas la lire (rien ne s'affiche)
J'aimerai vérifier toute les fonctions que j'ai coder... Mais sans pouvoir lire les données c'est problématique ^^'
Merci d'avance (P.S pas besoin de lire tout j'ai poster la totalité du code si l'erreur vient de plus loin..")
l'output:
Concour complet ! Entrez les scores des participantes. Terminez l'enregistrement avec fin Entrez le nom du candidat
le main
import java.util.Scanner; public class Main { public static void main(String[] args) { Concour ch = new Concour(10); ch.Inscrire( new Participante("Maya","maya familly")); ch.Inscrire( new Participante("Nadine","maya familly")); ch.Inscrire( new Participante("Evi","maya familly")); ch.Inscrire( new Participante("Lulu","maya familly")); ch.Inscrire( new Participante("Laila","maya familly")); ch.Inscrire( new Participante("monsieurX","arco")); ch.Inscrire( new Participante("monsieury","arco")); ch.Inscrire( new Participante("monsieurZ","arco")); ch.Inscrire( new Participante("Pascal")); ch.Inscrire( new Participante("Jean")); ch.toString(); Scanner sc = new Scanner(System.in); String nom; int score; System.out.println("Entrez les scores des participantes. Terminez l'enregistrement avec fin"); do { System.out.println("Entrez le nom du candidat"); nom = sc.nextLine(); System.out.println("Entrez son score"); score = sc.nextInt(); sc.nextLine(); // évacue la fin de ligne ch.ajouterScore(nom, score); } while(!nom.equals("fin")); ch.toString(); //ch.classementFinal(); } }
public class Participante{ private String nom; private String ecole; private int scoreAsym; private int scorePoutre; private int nbJugeAsym; private int nbJugePoutre; //constructeur public Participante(String nom){ this.nom = nom; this.ecole = "aucune"; this.scorePoutre = 10; // a retirer } public Participante(String nom, String ecole){ this.nom = nom; this.ecole = ecole; this.scorePoutre = 10; // a retirer } public void noteAsym(int score){ this.scoreAsym += score; this.nbJugeAsym++; } public void notePoutre(int score){ this.scorePoutre += score; this.nbJugePoutre++; } public String getNom() { return nom; } public String getEcole() { return ecole; } public float getMoyenneAsym() { return(scoreAsym/nbJugeAsym)*10; } public float getAsym() { return scoreAsym; } public float getMoyennePoutre() { return (scorePoutre/nbJugePoutre)*10; } public float getMoyenneTotal() { return(getMoyenneAsym()/2 +getMoyennePoutre()/2 ); } public String toString() { return "Participante: "+nom+" Ecole: "+ecole+" Score moyen epreuve asymetrique: "+getMoyenneAsym()+" Score moyen epreuve Poutre "+getMoyennePoutre()+" Moyenne globale: "+getMoyenneTotal() ; } //renvoie 1 si this est le gagnant sinon 0 public int comparerMoyenne(Participante p) { int winner; if(this.getMoyenneTotal() > p.getMoyenneTotal()) winner=1; else if (this.getMoyenneTotal() > p.getMoyenneTotal()) winner=0; else { if(nom.length() > p.nom.length()) winner=1; else winner=0; } return winner; } Concour ch; public void cloner() { ch.Inscrire( new Participante(this.nom, this.ecole)); } public void ecole(String ecole) { if(this.ecole == ecole) System.out.println("La participante provient de cette école"); else System.out.println("La participante provient d'une autre école. A savoir: "+this.ecole); } }
public class Concour { private int MaxInscrit; private int nbInscrit; private Participante[] tab; public Concour(int nb) { this.MaxInscrit=nb; this.nbInscrit=0; tab = new Participante[MaxInscrit]; } public void Inscrire(Participante p) { tab[nbInscrit] = p; nbInscrit++; // Trie(p.getNom()); Complet(); } public void Inscrire(String nom) { tab[nbInscrit] = new Participante(nom); nbInscrit++; // Trie(nom); Complet(); } public void Inscrire(String nom, String ecole) { tab[nbInscrit] = new Participante(nom,ecole); nbInscrit++; // Trie(nom); Complet(); } private void Complet() { if(nbInscrit == MaxInscrit) System.out.println("Concour complet !"); } /*private void Trie(String name) { int cpt = 0; while (cpt<nbInscrit) { if(tab[cpt].getNom().compareTo(name)) else { temp = new Participante(tab[cpt].getNom()); tab[cpt].getNom() = name; name = tab[cpt].getNom(); cpt++; } } }*/ public void ajouterScore (String name, int nb) { int cpt = 0; boolean ok = false; while (cpt < nbInscrit || ok == true) { if (tab[cpt].getNom() == name) {ok = true; tab[cpt].getAsym();} else cpt++; } } public void afficherEcole(String school) { int cpt=0; while (cpt < nbInscrit ) { if (tab[cpt].getEcole() == school) System.out.println(tab[cpt].getNom()+"\n"); else cpt++; } } public void classementAsym() { int cpt=0; while (cpt < nbInscrit ) { System.out.println(tab[cpt].getNom()+": "+tab[cpt].getMoyenneAsym()+"\n"); cpt++; } } public void classementFinal() { int cpt=0; while (cpt < nbInscrit ) { System.out.println(tab[cpt].toString()+"\n"); } } public String toString() { return "Le concour possède "+nbInscrit+" sur un total de: "+MaxInscrit; } }
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
Modifié par kij_82 le 21/08/2013 à 13:44
Modifié par kij_82 le 21/08/2013 à 13:44
Bonjour,
Ca ne fonctionne pas car ta fonction 'toString()' retourne une String, mais tu ne l'affiche tout simplement pas via un System.out.println(..) au retour de la fonction (dans ton main donc)
Globalement, essaie de lire des articles sur les conventions de nommage, etc. Mettre des majuscules comme première lettre de variable est à éviter. Idem, si tu accèdes à des variables de classes à l'intérieur de tes méthodes de classes, si tu ne passe pas par des accesseurs (getter / setter), précéde par this.nomDeMaVariable.
C'est tout de suite plus lisible pour quelqun ne connaissant pas ton code, ou ta manière de coder.
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~
Ca ne fonctionne pas car ta fonction 'toString()' retourne une String, mais tu ne l'affiche tout simplement pas via un System.out.println(..) au retour de la fonction (dans ton main donc)
Globalement, essaie de lire des articles sur les conventions de nommage, etc. Mettre des majuscules comme première lettre de variable est à éviter. Idem, si tu accèdes à des variables de classes à l'intérieur de tes méthodes de classes, si tu ne passe pas par des accesseurs (getter / setter), précéde par this.nomDeMaVariable.
C'est tout de suite plus lisible pour quelqun ne connaissant pas ton code, ou ta manière de coder.
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~