Correction programme Java enregistrement d'infos
Bonjour à tous je suis nouveau sur ce forum et j'arrive déjà, histoire de bien commencer, avec un problème.
Voilà je suis des cours par correspondance à la fac, parmi lesquelles un sur java et là je bloque sur un tp où on me demande ceci:
Saisie et validation des informations
Le programme devra permettre de saisir au clavier les informations suivantes et de les valider suivant les règles définies:
Informations du joueur.
Nom: Une chaine de caractère dont la longueur est comprise entre 3 et 256 caractères.
Prénom: Une chaine de caractère dont la longueur est comprise entre 3 et 256 caractères.
Âge: entier compris entre 10 et 90 inclusivement.
Les informations sur les parties de Sudoku jouées
Pour chaque partie de Sudoku, voici les informations demandées:
Niveau de difficulté (facile, moyen ou difficile)
Partie gagnée ou perdue?
Si gagné : temps de résolution de la grille.
Traitement et affichage des résultats
Le programme devra calculer les statistiques suivantes:
Calculer pour chaque niveau le nombre de parties non terminées, le nombre de parties gagnées, le temps de résolution moyen et le taux de réussite du joueur.
Le temps de résolution moyen constitue la moyenne de temps de résolution des parties gagnées par le joueur.
Le taux de réussite constitue le pourcentage du nombre de parties gagnées par rapport au nombre de parties totales.
Calculer les statistiques globales qui représentent les statistiques de tous les niveaux de jeu.
Bon jusque la ça va j'ai créé le programme en question, il est quasiment terminé mais j'ai encore des petits soucis.
Le programme répète la boucle où il est demandé si le joueur à gagné, ou pas.
À la fin quand le joueur doit choisir si sortir du programme et afficher les stats ou au contraire enregistrer d'autres parties et bien dans tout les cas il m'affiche les stats .
Ps: mon niveau est plus que basique , la dernière chose qu j'ai étudié ce sont les boucles et c'est pour cela que je n'ai pas pu utiliser les tableau ce qui m'aurait certainement facilité .
Voici mon programme:
Code:
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329
| import java.util.Scanner;
public class sudokupart1 {
static Scanner sudoku = new Scanner (System.in);
public static void main(String[] args){
//initalisation variables
int Sudoku = 0;// niveau de jeu
int resultat = 0;// la condition, remplie ou pas
int nbrpartie_faciles = 1;// nombre de parties faciles jouées
int nbrpartie_moyennes = 1;// nombre de parties moyennes jouées
int nbrpartie_dificiles = 1;// nombre de parties dificiles jouées
int nbrpartiefaciles_terminées = 1;// nombre de parties faciles gagnées
int nbrpartiemoyennes_terminées = 1;// nombre de parties moyennes gagnées
int nbrpartiedificiles_terminées = 1;// nombre de parties dificiles gagnées
int tauxreussite_facile = nbrpartiefaciles_terminées/nbrpartie_faciles*100;// taux de réussite des parties de niveau facile
int tauxreussite_moyen = nbrpartiemoyennes_terminées/nbrpartie_moyennes*100;// taux de réussite des parties de niveau moyen
int tauxreussite_dificile = nbrpartiedificiles_terminées/nbrpartie_dificiles*100;// taux de réussite des parties de niveau dificile
int tempsreso_facile = 0;// temps de resolution d'une partie de niveau facile
int tempsreso_moyen = 0;// temps de resolution d'une partie de niveau moyen
int tempsreso_dificile = 0;// temps de resolution d'une partie de niveau dificile
int tempsmoyreso_facile = tempsreso_facile/nbrpartiefaciles_terminées;//temps de resolution moyen d'une partie de niveau facile
int tempsmoyreso_moyen = tempsreso_moyen/nbrpartiemoyennes_terminées;// temps de resolution moyen d'une partie de niveau moyen
int tempsmoyreso_dificile = tempsreso_dificile/nbrpartiedificiles_terminées;// temps de resolution moyen d'une partie de niveau dificile
int nbrpartieperdue = (nbrpartie_faciles+nbrpartie_moyennes+nbrpartie_dificiles)-(nbrpartiefaciles_terminées+nbrpartiemoyennes_terminées+nbrpartiedificiles_terminées);// nombre de parties perdues
int nbrpartiegagnée = nbrpartiefaciles_terminées+nbrpartiemoyennes_terminées+nbrpartiedificiles_terminées;// nombre de parties gagnées
int nbrpartiejouée = nbrpartie_faciles+nbrpartie_moyennes+nbrpartie_dificiles;// nombre de parties jouées
int tempsresomoy = (tempsmoyreso_facile+tempsmoyreso_moyen+tempsmoyreso_dificile)/(nbrpartiefaciles_terminées+nbrpartiemoyennes_terminées+nbrpartiedificiles_terminées);// temps de resolution moyen
String afficheur1 = null;
String afficheur2 = null;
String afficheur3 = null;
//affichage message de bienvenue et enregistrement du nom, prénom, age
System.out.println ("Bonjour, veuillez suivre les informations qui s'afficheront sur votre écran");//affichage message de bienvenue
int condition_nom = 0; //initialisation variables pour la condition sur la limite de caractères
while (condition_nom == 0){
Scanner Unscanner1 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre nom : ");
afficheur1 = Unscanner1.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(afficheur1.length()<3){ // si le nom comporte moin de 3 caractères
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom = 0; // variable à zero tant que la condition n'est pas remplie
}
else if (afficheur1.length()>256){ // si le nom comporte plus de 256 caractères
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom = 0; // variable à zero tant que la condition n'est pas remplie
}
else {condition_nom = 1;} // quand la condition est remplie passage à 1 et sortie de la boucle
}
int condition_nom1 = 0;//initialisation variables pour la condition sur la limite de caractères
while (condition_nom1 == 0){
Scanner Unscanner2 = new Scanner(System.in); //initialisation du scanner correspondant
System.out.print(" Entrez votre Prénom : ");
afficheur2 = Unscanner2.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
if(afficheur2.length()<3){ // si le prénom comporte moin de 3 caractères
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom1 = 0; // variable à zero tant que la condition n'est pas remplie
}
else if (afficheur2.length()>256){ // si le prénom comporte plus de 256 caractères
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom1 = 0; // variable à zero tant que la condition n'est pas remplie
}
else {condition_nom1 = 1;} // quand la condition est remplie passage à 1 et sortie de la boucle
}
int condition_age = 0;
while (condition_age == 0){
Scanner Unscanner3 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre âge :");
afficheur3 = Unscanner3.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(Integer.parseInt(afficheur3) < 10){ // si le nombre est inferieur à 10
System.out.println("Vous devez inserez un nombre compris entre 10 et 90");
condition_age = 0; // variable à zero tant que la condition n'est pas remplie
}
else if (Integer.parseInt(afficheur3) > 90){ // si le nombre est superieur à 90
System.out.println("Vous devez inserez un nom compris entre 10 et 90");
condition_age = 0; // variable à zero tant que la condition n'est pas remplie
}
else {condition_age = 1;} // quand la condition est remplie passage à 1 et sortie de la boucle
}
String reponse="O";
while (reponse.equals('O'));// quand la réponse égale à O alors lancement de la boucle
{
System.out.println("Veuillez choisir un niveau de jeu:");
System.out.println (" -----------------------------------");
System.out.println (" Entrez 1 pour Sudoku Debutant");
System.out.println (" Entrez 2 pour Sudoku Intermediaire");
System.out.println (" Entrez 3 pour Sudoku Expert");
System.out.println (" -----------------------------------");
Sudoku = sudoku.nextInt();// extraction de la réponse
if(Sudoku ==1){// si le niveau choisi est égale à 1 alors lancement de la boucle corespondante
nbrpartie_faciles++; // incrémentaion du nombre parties faciles
System.out.println("Avez-vous gagné la partie?");
int choix1 = 4;
switch (choix1)
{
Scanner Unscanner4 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Tapez 4 pour oui ");
System.out.print(" Tapez 5 pour non ");
Unscanner4.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
if(choix1 == 4)// si le joueur a gagné la partie alors
nbrpartiefaciles_terminées++;// incrémentation du nombre de parties faciles gagnées
tauxreussite_facile = nbrpartiefaciles_terminées/nbrpartie_faciles*100;// calcul du taux de réussite
tauxreussite_facile = nbrpartiefaciles_terminées-1/nbrpartie_faciles*100;//sinon calcul du taux de reussite en ajoutant un echec
System.out.println("En combien de temps vous avez remplie la grille?");
Scanner Unscanner5 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.println("Donnez la réponse en minutes");
String afficheur5 = Unscanner5.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
tempsreso_facile = (nbrpartiefaciles_terminées * tempsreso_facile) + Integer.parseInt(afficheur5) / ( nbrpartiefaciles_terminées); //calcul du temps de résolution
break;
if (choix1 == 5)
break;
}
{
if(Sudoku ==2){// si le niveau choisi est égale à 2 alors lancement de la boucle corespondante
nbrpartie_moyennes++;
System.out.println("Avez-vous gagné la partie?");
Scanner Unscanner6 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Tapez 4 pour oui ");
System.out.print(" Tapez 5 pour non ");
Unscanner6.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
if(resultat ==4)// si le joueur a gagné la partie alors
nbrpartiemoyennes_terminées++;// incrémentation du nombre de parties moyennes gagnées
tauxreussite_moyen = nbrpartiemoyennes_terminées/nbrpartie_moyennes*100;// calcul du taux de réussite
}
else {
tauxreussite_moyen = nbrpartiemoyennes_terminées-1/nbrpartie_moyennes*100;//sinon calcul du taux de reussite en ajoutant un echec
System.out.println("En combien de temps vous avez remplie la grille?");
Scanner Unscanner7 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.println("Donnez la réponse en minutes");
String afficheur7 = Unscanner7.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
tempsreso_moyen = (nbrpartiemoyennes_terminées * tempsreso_moyen) + Integer.parseInt(afficheur7) / ( nbrpartiemoyennes_terminées);//calcul du temps de résolution
}
if(Sudoku ==3){// si le niveau choisi est égale à 3 alors lancement de la boucle corespondante
nbrpartie_dificiles++;// incrémentaion du nombre parties dificiles
System.out.println("Avez-vous gagné la partie?");
Scanner Unscanner8 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Tapez 4 pour oui ");
System.out.print(" Tapez 5 pour non ");
Unscanner8.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(resultat ==4)// si le joueur a gagné la partie alors
nbrpartiedificiles_terminées++;// incrémentation du nombre de parties dificiles gagnées
tauxreussite_dificile = nbrpartiedificiles_terminées/nbrpartie_dificiles*100;// calcul du taux de réussite
}
else {
tauxreussite_dificile = nbrpartiedificiles_terminées-1/nbrpartie_dificiles*100;//sinon calcul du taux de reussite en ajoutant un echec
System.out.println("En combien de temps vous avez remplie la grille?");
Scanner Unscanner9 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.println("Donnez la réponse en minutes");
String afficheur9 = Unscanner9.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
tempsreso_dificile= (nbrpartiedificiles_terminées * tempsreso_dificile) + Integer.parseInt(afficheur9) / ( nbrpartiedificiles_terminées);//calcul du temps de résolution
}
System.out.println("Voulez-vous insérer d'autres parties? (O/N)"); //extraction de la reponse
Scanner Unscanner10 = new Scanner(System.in); //si la reponse est non alors sortie de la boucle
reponse = Unscanner10.nextLine();
//et affichage des résultats des variables
}
System.out.println("*****************************Statistiques Sudoku*****************************");
System.out.println("-------Informations personnelles");
System.out.println("Nom:"+" "+afficheur1+".");
System.out.println("Prénom:"+""+afficheur2+".");
System.out.println("Âge:"+""+afficheur3+"ans.");
System.out.println("---------------------------Statistiques détaillées--------------------------");
System.out.println("------Statistiques niveau facile ");
System.out.println("Nombre de parties non terminées: "+String.valueOf(nbrpartie_faciles-nbrpartiefaciles_terminées));
System.out.println("Nombre de parties gagnées: "+nbrpartiefaciles_terminées+" "+"Temps de résolution moyen: "+tempsmoyreso_facile);
System.out.println("Nombre total de parties jouées: "+nbrpartie_faciles);
System.out.println("Taux de réussite du joueur : "+tauxreussite_facile);
System.out.println("------Statistiques niveau moyen ");
System.out.println("Nombre de parties non terminées: "+String.valueOf(nbrpartie_moyennes-nbrpartiemoyennes_terminées));
System.out.println("Nombre de parties gagnées: "+nbrpartiemoyennes_terminées+" "+"Temps de résolution moyen: "+tempsmoyreso_moyen);
System.out.println("Nombre total de parties jouées: "+nbrpartie_moyennes);
System.out.println("Taux de réussite du joueur : "+tauxreussite_moyen);
System.out.println("------Statistiques niveau dificile ");
System.out.println("Nombre de parties non terminées: "+String.valueOf(nbrpartie_dificiles-nbrpartiedificiles_terminées));
System.out.println("Nombre de parties gagnées: "+nbrpartiedificiles_terminées+" "+"Temps de résolution moyen: "+tempsmoyreso_dificile);
System.out.println("Nombre total de parties jouées: "+nbrpartie_dificiles);
System.out.println("Taux de réussite du joueur : "+tauxreussite_dificile);
System.out.println("---------------------------Statistiques globales--------------------------");
System.out.println("Nombre de parties perdues: "+nbrpartieperdue);
System.out.println("Nombre de parties gagnées: "+nbrpartiegagnée+" "+"Temps de résolution moyen: "+tempsresomoy);
System.out.println("Nombre total de parties jouées: "+nbrpartiejouée);
System.out.println("Taux de réussite du joueur : "+(nbrpartiegagnée)/(nbrpartiejouée)*100);
} |