je suis aller voir sur le net et apparemment ce genre d'erreur peut être causée par le fait que le programme essai de diviser par zéro. mais je ne vois pas trop comment y remédier.
ben avce ton code, si le gars repond "non", la variable reponse devient 'n' et donc qd tu "repasses dans ton WHILE (reponse=='0')
tu ne remplis pas la condition et donc tu "saute" , tu sors du WHILE.
Atention peut etre a bien mettre des majuscules partout sur les "N" et les "O" que tu utilies, il faudrait pas que ca soit 'o' d'un cote et 'O' de l'autre et que ca colle pas.
pour ta division par 0, c'est au debut de ton programme qd tu declares tes varibales, comme tu en mets certianes à 0, il y en a d'autre (les taux) qui font des divisions par 0.
Il ne faut commencer à calculer les taux que quand il y a des parties qui commencent a etre enregistrées
D'accord ok merci pour la précision, j'ai vérifié et tout me semble ok de ce coté là.
Par contre toujours le même message d'erreur.
En effet ça viens bien de là car j'ai remplacé le 0 par 1 et ça marche jusqu'à "Pour continuer taper ? O pour oui" où le programme s'arrête j'ai tapé O et il apparaît en vert mais rien ne se passe.
envoie moi ton code complet si tu veux que je teste..
C'est peut etre ta fonction de "saisie" qui est buggué?
tu as fait "enter" ? avec ton clavier?
Le voilà:
import java.util.Scanner;
public class Information{
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
//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
Scanner Unscanner1 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre nom : ");
String Afficheur1 = Unscanner1.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
Scanner Unscanner2 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre Prénom : ");
String Afficheur2 = Unscanner2.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
Scanner Unscanner3 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre âge :");
String Afficheur3 = Unscanner3.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
System.out.print("Pour continuer taper O pour oui");// demande si le joueur veut continuer, si oui alors initialisation de la boucle
char reponse = 'O';
Scanner rep = new Scanner(System.in);// Scan de la reponse
while (reponse == '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?");
Scanner Unscanner4 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Tapez 4 pour oui ");
System.out.print(" Tapez 5 pour non ");
String Afficheur4 = Unscanner4.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
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
if(Resultat ==4)// si le joueur a gagné la partie alors
nbrpartiefaciles_terminées++;// incrémentation du nombre de parties faciles gagnées
tempsreso_facile = (nbrpartiefaciles_terminées * tempsreso_facile) + Integer.parseInt(Afficheur5) / ( nbrpartiefaciles_terminées); //calcul du temps de résolution
tauxreussite_facile = nbrpartiefaciles_terminées/nbrpartie_faciles*100;// calcul du taux de réussite
}
else {
tauxreussite_facile = nbrpartiefaciles_terminées-1/nbrpartie_faciles*100;//sinon calcul du taux de reussite en ajoutant un echec
}
if(Sudoku ==2){// si le niveau choisi est égale à 2 alors lancement de la boucle corespondante
nbrpartie_moyennes++; //incrémentaion du nombre parties 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 ");
String Afficheur6 = Unscanner6.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
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
if(Resultat ==4)// si le joueur a gagné la partie alors
nbrpartiemoyennes_terminées++;// incrémentation du nombre de parties moyennes gagnées
tempsreso_moyen = (nbrpartiemoyennes_terminées * tempsreso_moyen) + Integer.parseInt(Afficheur7) / ( nbrpartiemoyennes_terminées);//calcul du temps de résolution
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
}
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 ");
String Afficheur8 = Unscanner8.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
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
if(Resultat ==4)// si le joueur a gagné la partie alors
nbrpartiedificiles_terminées++;// incrémentation du nombre de parties dificiles gagnées
tempsreso_dificile= (nbrpartiedificiles_terminées * tempsreso_dificile) + Integer.parseInt(Afficheur9) / ( nbrpartiedificiles_terminées);//calcul du temps de résolution
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("Voulez-vous inserer d'autres parties? (O/N)");
reponse = rep.nextLine().charAt(0); //extraction de la reponse
//si la reponse est non alors sortie de la boucle
//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);
}
}
}
déjà, pares:
Scanner rep = new Scanner(System.in);// Scan de la reponse
tu as oublié de lire la sasiie..
et le probleme ensuite, c'est que faire xhile (reponde=='0') ca marche pas!
pour comprarer des chaines de caractères il faut utiliser uen fonction particuliere que je te laise trouver.
La en fait il compare pa la valeur de reponse avce la chaine 'O' mais un truc plus compliqué,e t au final, il entre pas dans le while
J'ai trouvé ces deux formules, par contre je la met où la formule?
Character.toString(char)
String.valueOf(char)
Voilà là je crois que c'est bon
System.out.print("Pour continuer taper O pour oui");// demande si le joueur veut continuer, si oui alors initialisation de la boucle
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char reponse = str.charAt(0);
J'essaye et on verra bien
Mais c'est pas possible, à chaque fois que je crois en être sortit il y a un truc qui cloche.
Maintenant il me sousligne ça
System.out.println("Voulez-vous inserer d'autres parties? (O/N)");
reponse = rep.nextLine().charAt(0); //extraction de la reponse
et il me dit
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
rep cannot be resolved
at Information.main(Information.java:185)
je regardais et en plus du problème précédent il faut que je rajoute quelque chose qui me permette de limiter les caractères car on me demande :
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.
problème d'avant réglé par contre ça change rien au fait que je soit toujours bloqué au choix oui ou non, j'ai du me tromper sur la formule :
System.out.print("Pour continuer taper O pour oui");// demande si le joueur veut continuer, si oui alors initialisation de la boucle
Scanner rep = new Scanner(System.in);
String str = rep.nextLine();
char reponse = str.charAt(0);
while (reponse == 'O');// quand la réponse égale à O alors lancement de la boucle
{
c'est toujours pareil, tu as du oublié de déclarer la variable rep, ou alors tu l'as fait après la ligne ou tu l'utilse.
pour les controle, une fois que tu as "lu" les valeurs avec le scanner, ben tu dois faire un IF
(en controlant la longeur de la chaine d ecaractère ou la valeur du nombre et en focntion, redemander une saisie
(dans l'absolue, il faudrait meme refaire un WHILE et refaire une saisie tant que les controles ne sont pas validés
du style:
boolean test_nom_valide=0
WHILE (test_nom_valide != 1)
{demander saisie de la valeur;
if (longuer nom compris entre 1 et 255){test_nom_valide = 1}else {test_nom_valide = 0}
}
NB: ton programme est compliqué , c'est normal qu'il soit diffisle à coder
pour le passage du char en string j'ai trouvé ça:
char a='v';
String mot=Character.toString(a);
le problème c'est que je ne voit pas trop comment l'appliquer à ça:
char reponse = 'O';
Scanner rep = new Scanner(System.in);
String str = rep.nextLine();
char reponse = str.charAt(0);
En cherchant sur Internet j'ai trouvé ça:
String id = reader.readLine();
if id.length()>9)
System.out.println("Erreur longueur de "+id.length()+" ne peux depasser 9 char");
else
{
if (id.length()==0)
System.out.println("Ne peux etre à 0");
else
ident=Integer.parseInt(id);
Bon c'est pour un identifiant mais je pourrais utiliser la partie avec length pour limiter le nombres de caractères.
Je precise mon propos:
Si tu ecris
While(reponse=='o')
C'est un peu complique a expliquer mais en fait le programme ne fait pas la compraison que tu imagines. En fait il teste si les deux variables, les deux chaines de caracteres ici, ont la meme adresse memoire, ce qui est faux, dans tous les cas, meme si reponse vaut effectivement 'o'
Donc pour bien faire, il faut ecrire
While ( reponse.equals('o'))
Et là ca doit aller mieux.
Il comprera bien ta saisie avec 'o' et le programme devrait avancer..'
Bon courage
J'ai fait ce que tu m'as dit:
while (reponse.equals('O'));
par contre il me dit que je ne peux pas invoquer equals(char) sur une primitive de type char.
J'ai surement oublié de mettre quelque chose plus haut.
System.out.print("Pour continuer taper O pour oui");// demande si le joueur veut continuer, si oui alors initialisation de la boucle
char reponse = 'O';
Scanner rep = new Scanner(System.in);
String str = rep.nextLine();
while (reponse.equals('O'));// quand la réponse égale à O alors lancement de la boucle
}
Concernant l'autre problème sur la longueur des caractères, j'ai fait ça:
System.out.println ("Bonjour, veuillez suivre les informations qui s'afficheront sur votre écran");//affichage message de bienvenue
Scanner Unscanner1 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre nom : ");
String Afficheur1 = Unscanner1.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(Afficheur1.length()<3)// condition si les caractères sont inferieur à 3 alors affichage
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
else
{
if(Afficheur1.length()>256)// condition si les caractères sont superieur à 256 alors affichage
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
}
Par contre dis moi si je me trompe, mais la boucle que j'ai fait n'empêche en rien l'utilisateur de continuer.
J'ai vraiment du mal avec cette partie:
System.out.print("Pour continuer taper O pour oui");// demande si le joueur veut continuer, si oui alors initialisation de la boucle
char reponse = 'O';
Scanner rep = new Scanner(System.in);
String str = Character.toString(reponse);
String reponse = rep.nextLine();
while (reponse.equals('O'));// quand la réponse égale à O alors lancement de la boucle
{
Maintenant le problème c'est que j'ai dupliqué la variable locale.
tu as raison, ca ne l'empeche pas de continuer !
Pour bloquer un utilisateur il faut le mettre dans une boucle WHILE et le faire sortie de la boucle que quand il remplit les conditions demandées.
du style: (je reprends ton code et je l'entoure avec ce qu'il manque EN MAJUSCULE)
BOOLEAN CONDITIONS_NOM = 0;
WHILE (CONDITIONS_NOM == 0){
Scanner Unscanner1 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre nom : ");
String Afficheur1 = Unscanner1.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(Afficheur1.length()<3)// condition si les caractères sont inferieur à 3 alors affichage
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
CONDITIONS_NOM = 0;
else IF
{
if(Afficheur1.length()>256)// condition si les caractères sont superieur à 256 alors affichage
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
CONDITIONS_NOM = 0;
}
else {CONDITIONS_NOM = 1;}
}
avce ce principe, tant qu'il y a un probleme, on reste dans la boucle, et on en sort que quand tout est ok et que la varibale passe à 1.
et pour bien comprendre ton code, prends l'habitude de bien "l'indenter" c'est important..su style:
BOOLEAN CONDITIONS_NOM = 0;
WHILE (CONDITIONS_NOM == 0){
Scanner Unscanner1 = new Scanner(System.in);
System.out.print(" Entrez votre nom : ");
String Afficheur1 = Unscanner1.nextLine();
if(Afficheur1.length()<3){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
CONDITIONS_NOM = 0;
}
else IF (Afficheur1.length()>256){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
CONDITIONS_NOM = 0;
}
else {CONDITIONS_NOM = 1;}
}
Ok d'accord je vais l'appliquer aux autres, par contre ça coince au niveau de :
boolean condition_nom = 0;
while (condition_nom == 0){
Apparemment un problème entre les types int et boolean
je suppose qu'il faut que je rajoute une formule, j'ai trouvé ça est ce que c'est correct?
boolean b = ....;
int i = -("false".indexOf("" + b));
trop compliqué.
déclare juste la variable en int directement:
int condition_nom =0 //ca devrait marcher.
Magique, ça marche
Bon je l'applique au reste, sinon concernant l'autre problème celui du
System.out.print("Pour continuer taper O pour oui");// demande si le joueur veut continuer, si oui alors initialisation de la boucle
char reponse = 'O';
Scanner rep = new Scanner(System.in);
String str = Character.toString(reponse);
String reponse = rep.nextLine();
while (reponse.equals('O'));// quand la réponse égale à O alors lancement de la boucle
{
Je bloque sérieusement sur le soucis de compatibilité entre la variable char et celle string.
C'est fait pour les conditions au niveau des caractères par contre la dernière est une condition d'age compris entre 10 et 90 évidement il me met qu'il y a un problème de compatibilité entre string et int, il faut que je caste en ajoutant String.valueOf ?
int condition_age = 0;
int a = 10;
int b = 90;
while (condition_age == 0){
Scanner Unscanner3 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre âge :");
String Afficheur3 = Unscanner3.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(Afficheur3 < 10){
System.out.println("Vous devez inserez un nombre compris entre 10 et 90");
condition_age = 0;
}
else if (Afficheur3 > 90){
System.out.println("Vous devez inserez un nom compris entre 10 et 90");
condition_age = 0;
}
else {condition_age = 1;}
}
ok comme ça :
int condition_age = 0;
int a = 10;
int b = 90;
while (condition_age == 0){
Scanner Unscanner3 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre âge :");
String Afficheur3 = Unscanner3.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(Integer.parseInt(Afficheur3) < 10){
System.out.println("Vous devez inserez un nombre compris entre 10 et 90");
condition_age = 0;
}
else if (Integer.parseInt(Afficheur3) > 90){
System.out.println("Vous devez inserez un nom compris entre 10 et 90");
condition_age = 0;
}
else {condition_age = 1;}
}
par contre j'ai toujours le problème concernant ça:
System.out.print("Pour continuer taper O pour oui");// demande si le joueur veut continuer, si oui alors initialisation de la boucle
char reponse = 'O';
Scanner rep = new Scanner(System.in);
String str = Character.toString(reponse);
String reponse = rep.nextLine();
while (reponse.equals('O'));// quand la réponse égale à O alors lancement de la boucle
voilà:
import java.util.Scanner;
public class Information{
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
//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;
while (condition_nom == 0){
Scanner Unscanner1 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre nom : ");
String Afficheur1 = Unscanner1.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(Afficheur1.length()<3){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom = 0;
}
else if (Afficheur1.length()>256){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom = 0;
}
else {condition_nom = 1;}
}
int condition_nom1 = 0;
while (condition_nom == 0){
Scanner Unscanner2 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre Prénom : ");
String Afficheur2 = Unscanner2.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(Afficheur2.length()<3){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom1 = 0;
}
else if (Afficheur2.length()>256){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom1 = 0;
}
else {condition_nom1 = 1;}
}
int condition_age = 0;
int a = 10;
int b = 90;
while (condition_age == 0){
Scanner Unscanner3 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Entrez votre âge :");
String Afficheur3 = Unscanner3.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
if(Integer.parseInt(Afficheur3) < 10){
System.out.println("Vous devez inserez un nombre compris entre 10 et 90");
condition_age = 0;
}
else if (Integer.parseInt(Afficheur3) > 90){
System.out.println("Vous devez inserez un nom compris entre 10 et 90");
condition_age = 0;
}
else {condition_age = 1;}
}
System.out.print("Pour continuer taper O pour oui");// demande si le joueur veut continuer, si oui alors initialisation de la boucle
char reponse = 'O';
Scanner rep = new Scanner(System.in);
String str = Character.toString(reponse);
String reponse = rep.nextLine();
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?");
Scanner Unscanner4 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Tapez 4 pour oui ");
System.out.print(" Tapez 5 pour non ");
String Afficheur4 = Unscanner4.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
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
if(Resultat ==4)// si le joueur a gagné la partie alors
nbrpartiefaciles_terminées++;// incrémentation du nombre de parties faciles gagnées
tempsreso_facile = (nbrpartiefaciles_terminées * tempsreso_facile) + Integer.parseInt(Afficheur5) / ( nbrpartiefaciles_terminées); //calcul du temps de résolution
tauxreussite_facile = nbrpartiefaciles_terminées/nbrpartie_faciles*100;// calcul du taux de réussite
}
else {
tauxreussite_facile = nbrpartiefaciles_terminées-1/nbrpartie_faciles*100;//sinon calcul du taux de reussite en ajoutant un echec
}
if(Sudoku ==2){// si le niveau choisi est égale à 2 alors lancement de la boucle corespondante
nbrpartie_moyennes++; //incrémentaion du nombre parties 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 ");
String Afficheur6 = Unscanner6.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
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
if(Resultat ==4)// si le joueur a gagné la partie alors
nbrpartiemoyennes_terminées++;// incrémentation du nombre de parties moyennes gagnées
tempsreso_moyen = (nbrpartiemoyennes_terminées * tempsreso_moyen) + Integer.parseInt(Afficheur7) / ( nbrpartiemoyennes_terminées);//calcul du temps de résolution
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
}
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 ");
String Afficheur8 = Unscanner8.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
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
if(Resultat ==4)// si le joueur a gagné la partie alors
nbrpartiedificiles_terminées++;// incrémentation du nombre de parties dificiles gagnées
tempsreso_dificile= (nbrpartiedificiles_terminées * tempsreso_dificile) + Integer.parseInt(Afficheur9) / ( nbrpartiedificiles_terminées);//calcul du temps de résolution
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("Voulez-vous inserer d'autres parties? (O/N)");
reponse = rep.nextLine().charAt(0); //extraction de la reponse
//si la reponse est non alors sortie de la boucle
//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);
}
}
Voici une version légèremen corrigée.
Elle tourne mais il y a encore des bugs que tu dois corriger.
Genre si on tape "5" (partie echouée), il demande qd meme le temps ce qui n'est pas normal..tu dois verifier tes if
mais elles'execute donc tes tets sotn faciles:
import java.util.Scanner;
public class test{
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;
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){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom = 0;
}
else if (Afficheur1.length()>256){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom = 0;
}
else {condition_nom = 1;}
}
int condition_nom1 = 0;
while (condition_nom1 == 0){
Scanner Unscanner2 = new Scanner(System.in);
System.out.print(" Entrez votre Prénom : ");
Afficheur2 = Unscanner2.nextLine();
if(Afficheur2.length()<3){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom1 = 0;
}
else if (Afficheur2.length()>256){
System.out.println("Vous devez inserez un nom compris entre 3 et 256 caractères");
condition_nom1 = 0;
}
else {condition_nom1 = 1;}
}
int condition_age = 0;
int a = 10;
int b = 90;
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){
System.out.println("Vous devez inserez un nombre compris entre 10 et 90");
condition_age = 0;
}
else if (Integer.parseInt(Afficheur3) > 90){
System.out.println("Vous devez inserez un nom compris entre 10 et 90");
condition_age = 0;
}
else {condition_age = 1;}
}
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?");
Scanner Unscanner4 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Tapez 4 pour oui ");
System.out.print(" Tapez 5 pour non ");
String Afficheur4 = Unscanner4.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
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
if(Resultat ==4)// si le joueur a gagné la partie alors
nbrpartiefaciles_terminées++;// incrémentation du nombre de parties faciles gagnées
tempsreso_facile = (nbrpartiefaciles_terminées * tempsreso_facile) + Integer.parseInt(Afficheur5) / ( nbrpartiefaciles_terminées); //calcul du temps de résolution
tauxreussite_facile = nbrpartiefaciles_terminées/nbrpartie_faciles*100;// calcul du taux de réussite
}
else {
tauxreussite_facile = nbrpartiefaciles_terminées-1/nbrpartie_faciles*100;//sinon calcul du taux de reussite en ajoutant un echec
}
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 ");
String Afficheur6 = Unscanner6.nextLine(); //extraction du contenu de la dernière ligne tapée par l'utilisateur
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
if(Resultat ==4)// si le joueur a gagné la partie alors
nbrpartiemoyennes_terminées++;// incrémentation du nombre de parties moyennes gagnées
tempsreso_moyen = (nbrpartiemoyennes_terminées * tempsreso_moyen) + Integer.parseInt(Afficheur7) / ( nbrpartiemoyennes_terminées);//calcul du temps de résolution
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
}
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 ");
String Afficheur8 = Unscanner8.nextLine();//extraction du contenu de la dernière ligne tapée par l'utilisateur
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
if(Resultat ==4)// si le joueur a gagné la partie alors
nbrpartiedificiles_terminées++;// incrémentation du nombre de parties dificiles gagnées
tempsreso_dificile= (nbrpartiedificiles_terminées * tempsreso_dificile) + Integer.parseInt(Afficheur9) / ( nbrpartiedificiles_terminées);//calcul du temps de résolution
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("Voulez-vous inserer d'autres parties? (O/N)");
Scanner Unscanner10 = new Scanner(System.in);
reponse = Unscanner10.nextLine();
//extraction de la reponse
//si la reponse est non alors sortie de la boucle
//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);
}
}
C'est bon c'est réglé en faisant comme ça :
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?");
Scanner Unscanner4 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Tapez 4 pour oui ");
System.out.print(" Tapez 5 pour non ");
String Afficheur4 = Unscanner4.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
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
}
else {
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
}
Voilà je crois pouvoir dire qu'il est terminé pour l'instant:
Je te l'envoie un dernière fois pour que tu puisse le tester.
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;
int a = 10; //initialisation variables pour limte age de 10 à 90
int b = 90;
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?");
Scanner Unscanner4 = new Scanner(System.in);//initialisation du scanner correspondant
System.out.print(" Tapez 4 pour oui ");
System.out.print(" Tapez 5 pour non ");
String Afficheur4 = Unscanner4.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
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
}
else {
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
}
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 ");
String Afficheur6 = 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 ");
String Afficheur8 = 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 inserer 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);
}
}
Malheureusement je viens de tester et ça marche pas très bien:
Déjà il demande deux fois en combien de minutes le sudoku à été fait
Et quand on tape O pour insérer d'autres parties ça m'affiche les stats.
C'est parceque tu as mis la question sur le temps dans le ELSe
Il faut le mettra avant, qd la personne repond que la partie est gagnee.
Dans le if
Pour les stats, je sais pas, il faut regarder pourquoi tu sors comme ca de la boucle...je n'ai plus mon pc pour tester la.
Alors j'ai fais quelques recherches et apparemment la répétition est due au fait que la variable résultat reste à 0 et donc du coup le programme répète le else plusieurs fois de suite.
Le problème c'est que je ne vois pas comment résoudre le problème de la valeur de ma variable.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :