Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

Problème avec Java

Posté par
shana1803
04-05-17 à 05:02

Bonjour je n'arrive pas à exécuter mon code sur Éclipse pourtant mon code est bon. Ca me dit que j'ai une erreur dans  java.lang.ArithmeticException

Si je comprend bien c'est une erreur de calcul. Mes variables sont initialisées à 0 et ça pose problème pour ma division plus tard. Mais je suis vraiment mêlée et je n'arrive plus à me corriger.  

Aussi j'ai ma boucle qui ne fonctionne pas, celle qui doit faire recommencer le jeu:
Voulez-vous recommencer une partie ?

Est-ce que vous pouvez jeter un coup d'œil et m'aider à trouver la réponse s'il vous plait ?

Merci beaucoup !

Voici mon code:


import java.util.Scanner;

public class SudokuTN2 {

/******************************************************************************************
***************** INITIALISATION DES VARIABLES****** ******************************
*******************************************************************************************/

public static int condition_niveau = 0, validation_niveau = 0, validation_age = 0, condition_nom = 0, condition_prenom = 0, condition_validation = 0, condition_age = 0;
public static int validation_PartiesJouees_Facile = 0, condition_PartiesJouees_Facile = 0, validation_tempsResolution_Facile = 0, condition_tempsResolution_Facile = 0, resultatGagner_Facile = 0;
public static int validation_PartiesJouees_Moyen = 0, condition_PartiesJouees_Moyen = 0, validation_tempsResolution_Moyen = 0, condition_tempsResolution_Moyen = 0, resultatGagner_Moyen = 0;
public static int validation_PartiesJouees_Difficile = 0, condition_PartiesJouees_Difficile = 0, validation_tempsResolution_Difficile = 0, condition_tempsResolution_Difficile = 0, resultatGagner_Difficile = 0;

public static int nbre_parties_jouees_Facile = 0, nbre_parties_jouees_Moyen = 0, nbre_parties_jouees_Difficile = 0;
public static int nbre_parties_gagnees_Facile = 0, nbre_parties_gagnees_Moyen = 0, nbre_parties_gagnees_Difficile = 0;
public static int nbre_parties_nonterminees_Facile = 0, nbre_parties_nonterminees_Moyen = 0, nbre_parties_nonterminees_Difficile = 0;

public static int resultat = 0;
public static int resultat_nbre_parties_jouees = 0, resultat_nbre_parties_gagnees = 0, resultat_temps_resolution = 0;
public static int nbre_parties_nonTerminees = (resultat_nbre_parties_jouees - resultat_nbre_parties_gagnees);
public static int validation_tempsResolution = ((validation_tempsResolution_Facile + validation_tempsResolution_Moyen + validation_tempsResolution_Difficile)/3);
public static int nbre_parties_jouees = (nbre_parties_jouees_Facile + nbre_parties_jouees_Moyen + nbre_parties_jouees_Difficile);


public static String validation_recommencer, condition_recommencer, validation_nom, validation_prenom;

static int tauxreussite_Facile = 0;
static int tauxreussite_Moyen = 0;
static int tauxreussite_Difficile = 0;
static int nbre_parties_perdues = (nbre_parties_nonterminees_Facile + nbre_parties_nonterminees_Moyen + nbre_parties_nonterminees_Difficile);
static int nbre_parties_gagnees = ((nbre_parties_nonterminees_Facile + nbre_parties_nonterminees_Moyen + nbre_parties_nonterminees_Difficile) - (nbre_parties_jouees_Facile + nbre_parties_jouees_Moyen + nbre_parties_jouees_Difficile));

static Scanner saisir_recommencer = new Scanner(System.in);
static Scanner saisir_niveau = new Scanner(System.in);
static Scanner saisir_nom = new Scanner(System.in);
static Scanner saisir_prenom = new Scanner(System.in);
static Scanner saisir_age = new Scanner(System.in);
static Scanner saisir_PartiesJouees_Facile = new Scanner(System.in);
static Scanner saisir_PartiesJouees_Moyen = new Scanner(System.in);
static Scanner saisir_PartiesJouees_Difficile = new Scanner(System.in);
static Scanner saisir_tempsResolution_Facile = new Scanner(System.in);
static Scanner saisir_tempsResolution_Moyen = new Scanner(System.in);
static Scanner saisir_tempsResolution_Difficile = new Scanner(System.in);


/******************************************************************************************
***************** MAIN : DÉMARRAGE DU PROGRAMME ******************************
********************************************************************************************/

public static void main(String[] args) {   

System.out.println ("Bonjour, veuillez suivre les informations qui s'afficheront sur votre écran");

/*******************************************************************************************
**************** STRUCTURE DU PROGRAMME ***************************************
*******************************************************************************************/
    
InfoJoueur();

do {
saisir_niveau = new Scanner(System.in);
System.out.println ("Veuillez choisir le niveau de difficulté du jeu:");
System.out.println (" ----------------------------------------------");              
System.out.println (" Entrez 1 pour niveau Facile");
System.out.println (" Entrez 2 pour niveau Moyen");
System.out.println (" Entrez 3 pour niveau Difficile");
System.out.println (" ----------------------------------------------");  
validation_niveau = saisir_niveau.nextInt();

   if (validation_niveau < 1  || validation_niveau > 3){
   System.out.println("Vous devez entrer le niveau approprié");
   condition_niveau = 0;
                                         
   } else condition_niveau = 1;

   switch (validation_niveau) {
    
   case 1:
      NiveauFacile();
      break;
     
   case 2:
      NiveauMoyen();
      break;
  
   case 3:
      NiveauDifficile();
      break;
   }  
}
    while (condition_niveau == 0);
                          Afficher_Statistiques();
}

/****************************************************************************************
********************** ENREGISTREMENT DES MÉTHODES ************************
****************************************************************************************/

/****************************************************************************************
************************* MÉTHODE 1 : InfoJoueurs () ********************************
****************************************************************************************/

public static void InfoJoueur()
  {
            /**********************************************************************************
            *********1. INFORMATIONS DU JOUEUR: Son nom ***************************
          ************************************************************************************/    

do {
saisir_nom = new Scanner(System.in);
     System.out.println("Entrez votre nom : ");
        validation_nom = saisir_nom.nextLine();

         if (validation_nom.length() < 3 || validation_nom.length() > 256){
            System.out.println("Vous devez entrer un nom de plus de 3 et de moins de 253 caractères");
            condition_nom = 0;
            }                                      
         else condition_nom = 1;
}    
while (condition_nom == 0);

   /******************************************************************************************
**************** 2. INFORMATIONS DU JOUEUR: Son prénom ************************
*******************************************************************************************/                                                      

   do {
saisir_prenom = new Scanner(System.in);
    System.out.println("Entrez votre prénom : ");
    validation_prenom = saisir_prenom.nextLine();
    
        if (validation_prenom.length() < 3 || validation_prenom.length() > 256){
            System.out.println("Vous devez entrer un prénom de plus de 3 et de moins de 253 caractères");
            condition_prenom = 0;
            }                                      
         else condition_prenom = 1;
     }      
   while (condition_prenom == 0);
            /*****************************************************************************************
*****************3. INFORMATIONS DU JOUEUR: Son âge ***************************
*****************************************************************************************/  

   do {
saisir_age = new Scanner(System.in);
     System.out.println("Entrez votre âge : ");
        validation_age = saisir_age.nextInt();
    
         if (validation_age < 10  || validation_age > 90){
            System.out.println("Vous devez entrer un âge de plus de 10 et de moins de 90 ans");
            condition_age = 0;
            }                                      
         else condition_age = 1;
   }
   while (condition_age == 0);
}

/*****************************************************************************************
******************* MÉTHODE 2 : NiveauFacile() **************************************
*****************************************************************************************/

public static void NiveauFacile()
  {

if (validation_niveau == 1) {
nbre_parties_jouees_Facile++;

do {   
saisir_PartiesJouees_Facile = new Scanner(System.in);
System.out.println("Avez-vous gagné la partie?");                    
System.out.println(" Tapez 1 pour oui ");
System.out.println(" Tapez 0 pour non ");
validation_PartiesJouees_Facile = saisir_PartiesJouees_Facile.nextInt();

     if(validation_PartiesJouees_Facile == 1){
     nbre_parties_gagnees_Facile++;
     saisir_tempsResolution_Facile = new Scanner(System.in);
     System.out.println("Combien de temps avez-vous mis pour remplir la grille, donnez le temps en minutes?");
     validation_tempsResolution_Facile = saisir_tempsResolution_Facile.nextInt();
            condition_tempsResolution_Facile = 1;                                                                                                   
      
     } else
     validation_PartiesJouees_Facile = 0;
     nbre_parties_nonterminees_Facile++;
}
while (condition_PartiesJouees_Facile == 1);
  {
       System.out.println("Voulez-vous rejouer d'autres parties? (o/n)");
       saisir_recommencer = new Scanner(System.in);
       validation_recommencer = saisir_recommencer.nextLine();  
                          
         if(condition_recommencer == "o"){
            validation_niveau = 1;         
    
         } else Afficher_Statistiques();
    
   }
}
  }

/*****************************************************************************************
***************************** MÉTHODE 3 : NiveauMoyen() ***************************
*****************************************************************************************/

public static void NiveauMoyen()
  {
if (validation_niveau == 2) {
nbre_parties_jouees_Moyen++;   

do {   
saisir_PartiesJouees_Moyen = new Scanner(System.in);
System.out.println("Avez-vous gagné la partie?");                    
System.out.println(" Tapez 1 pour oui ");
System.out.println(" Tapez 0 pour non ");
validation_PartiesJouees_Moyen = saisir_PartiesJouees_Moyen.nextInt();

     if(validation_PartiesJouees_Moyen == 1){
     nbre_parties_gagnees_Moyen++;
     saisir_tempsResolution_Moyen = new Scanner(System.in);
     System.out.println("Combien de temps avez-vous mis pour remplir la grille, donnez le temps en minutes?");
     validation_tempsResolution_Moyen = saisir_tempsResolution_Moyen.nextInt();
            condition_tempsResolution_Moyen = 1;                                                                                               
      
     } else
     validation_PartiesJouees_Moyen = 0;
     nbre_parties_nonterminees_Moyen++;
}
while (condition_PartiesJouees_Moyen == 1);
  {
       System.out.println("Voulez-vous rejouer d'autres parties? (o/n)");
       saisir_recommencer = new Scanner(System.in);
       validation_recommencer = saisir_recommencer.nextLine();  
                          
         if(condition_recommencer == "o"){
            validation_niveau = 1;
    
         } else Afficher_Statistiques();     
      }
}
  }

/******************************************************************************************
**************** MÉTHODE 4 : NiveauDifficile() ****************************************
******************************************************************************************/

public static void NiveauDifficile()
  {
if (validation_niveau == 3) {
nbre_parties_jouees_Difficile++;

do {   
saisir_PartiesJouees_Difficile = new Scanner(System.in);
System.out.println("Avez-vous gagné la partie?");                    
System.out.println(" Tapez 1 pour oui ");
System.out.println(" Tapez 0 pour non ");
validation_PartiesJouees_Difficile = saisir_PartiesJouees_Difficile.nextInt();

     if(validation_PartiesJouees_Difficile == 1){
     nbre_parties_gagnees_Difficile++;
     saisir_tempsResolution_Difficile = new Scanner(System.in);
     System.out.println("Combien de temps avez-vous mis pour remplir la grille, donnez le temps en minutes?");
     validation_tempsResolution_Difficile = saisir_tempsResolution_Difficile.nextInt();
            condition_tempsResolution_Difficile = 1;                                                                                                 
      
     } else
     validation_PartiesJouees_Difficile = 0;
     nbre_parties_nonterminees_Difficile++;
}
while (condition_PartiesJouees_Difficile == 1);
  {
       System.out.println("Voulez-vous rejouer d'autres parties? (o/n)");
       saisir_recommencer = new Scanner(System.in);
       validation_recommencer = saisir_recommencer.nextLine();  
                          
         if(condition_recommencer == "o"){
            validation_niveau = 1;
    
         } else Afficher_Statistiques();
  }   
}
  }

/*****************************************************************************************
************************* MÉTHODE 5 : Afficher_Statistiques() ***********************
*****************************************************************************************/


public static void Afficher_Statistiques()
{
int tauxreussite_Facile = nbre_parties_nonterminees_Facile / nbre_parties_jouees_Facile * 100;
int tauxreussite_Moyen = nbre_parties_nonterminees_Moyen / nbre_parties_jouees_Moyen * 100;
int tauxreussite_Difficile = nbre_parties_nonterminees_Difficile / nbre_parties_jouees_Difficile * 100;

       /*****************************************************************************************
********************* 3. RESULTATS STATISTIQUES SUDOKU ************************
        **************************************************************************************/  
  
   System.out.println("*****************************Statistiques Sudoku*****************************");
              
   System.out.println("-------Informations personnelles");
   System.out.println("Nom:" + " " + validation_nom + ".");
   System.out.println("Prénom:" + "" + validation_prenom + ".");
   System.out.println("Âge:" + "" + validation_age + "ans.");
              
           /*****************************************************************************************
***************** 3. RESULTATS STATISTIQUES DÉTAILLÉES *************************
*****************************************************************************************/            

  System.out.println("---------------------------Statistiques détaillées--------------------------");
              
  System.out.println("------Statistiques niveau facile ");
  System.out.println("Nombre de parties non terminées: " + String.valueOf(nbre_parties_jouees_Facile - nbre_parties_nonterminees_Facile));
  System.out.println("Nombre de parties gagnées: " + nbre_parties_nonterminees_Facile + " " + "Temps de résolution moyen: " + validation_tempsResolution_Facile);
  System.out.println("Nombre total de parties jouées: " + nbre_parties_jouees_Facile);
  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(nbre_parties_jouees_Moyen - nbre_parties_nonterminees_Moyen));
  System.out.println("Nombre de parties gagnées: " + nbre_parties_nonterminees_Moyen + " " + "Temps de résolution moyen: " + validation_tempsResolution_Moyen);
  System.out.println("Nombre total de parties jouées: " + nbre_parties_jouees_Moyen);
  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(nbre_parties_jouees_Difficile - nbre_parties_nonterminees_Difficile));
  System.out.println("Nombre de parties gagnées: " + nbre_parties_nonterminees_Difficile + " " + "Temps de résolution moyen: " + validation_tempsResolution_Difficile);
  System.out.println("Nombre total de parties jouées: " + nbre_parties_jouees_Difficile);
  System.out.println("Taux de réussite du joueur : " + tauxreussite_Difficile);
              
           /*****************************************************************************************
********************** 3. RESULTATS STATISTIQUES GLOBALES **********************
*****************************************************************************************/            

  //System.out.println("---------------------------Statistiques globales--------------------------");
              
// System.out.println("Nombre de parties perdues: " + nbre_parties_perdues );
// System.out.println("Nombre de parties gagnées: " + (nbre_parties_gagnees) + " " + "Temps de résolution moyen: " + validation_tempsResolution);
  //System.out.println("Nombre total de parties jouées: " + (nbre_parties_jouees));
  //System.out.println("Taux de réussite du joueur : " + nbre_parties_gagnees / nbre_parties_jouees * 100 + "%");                                                                                                                

/****************************************************************************************
*************************** FIN *********************************************************
****************************************************************************************/
  }
}

Posté par
bbomaths
re : Problème avec Java 04-05-17 à 05:29

Bonjour.

Un code qui génère une "exception" mathématique signifie qu'une division  par zéro (0) n'est généralement pas très loin... à vous de vérifier où  pourrait se trouver un dénominateur nul.

Posté par
bbomaths
re : Problème avec Java 04-05-17 à 07:33

Le plus simple est de tester et/ou afficher la valeur du dénominateur avant calcul... surtout qu'il ne semble pas y avoir beaucoup de divisions.

Posté par
trapangle
re : Problème avec Java 04-05-17 à 07:48

Bonjour,

Normalement avec le message d'erreur, il y a aussi le numéro de la ligne où se produit l'erreur, ça peut aider pour trouver.

Posté par
shana1803
re : Problème avec Java 04-05-17 à 18:44

bbomaths @ 04-05-2017 à 05:29

Bonjour.

Un code qui génère une "exception" mathématique signifie qu'une division  par zéro (0) n'est généralement pas très loin... à vous de vérifier où  pourrait se trouver un dénominateur nul.


Oui il y a mes  divisions pour mes taux de réussites pour le niveau Facile, Moyen, Difficile et mon Global:

System.out.println("Taux de réussite du joueur : " + nbre_parties_gagnees / nbre_parties_jouees * 100 + "%");

Mais alors j'ai besoin d'initialiser mes 2 variables à 1 pas à 0 si je comprends bien:

int nbre_parties_gagnees = 1, nbre_parties_jouees = 1;

Le problème avec ça c'est que mes variables vont commencer leur calcul avec 1 déjà et ça va fausser mes données. Est-ce que je dois retrancher - 1 après et si oui où je suis mêlée à ce niveau là.

Posté par
trapangle
re : Problème avec Java 04-05-17 à 18:55

Ou bien comme bbomaths disait plus haut, tu n'affiches rien si nbre_parties_jouees vaut 0 :
if (nbre_parties_jouees>0) System.out.println("...");

Accessoirement, il me semble que la variable nbre_parties_jouees vaut toujours 0, elle n'est incrémentée nulle part.

Posté par
shana1803
re : Problème avec Java 04-05-17 à 19:12

trapangle @ 04-05-2017 à 18:55

Ou bien comme bbomaths disait plus haut, tu n'affiches rien si nbre_parties_jouees vaut 0 :
if (nbre_parties_jouees>0) System.out.println("...");

Accessoirement, il me semble que la variable nbre_parties_jouees vaut toujours 0, elle n'est incrémentée nulle part.



Oui je l'utilise dans mes méthodes : NiveauFacile, NiveauMoyen et NiveauDIfficile
Elle est incrémentée à cet endroit:


if (validation_niveau == 3) {
nbre_parties_jouees_Difficile++;

do {   
saisir_PartiesJouees_Difficile = new Scanner(System.in);
System.out.println("Avez-vous gagné la partie?");                    
System.out.println(" Tapez 1 pour oui ");
System.out.println(" Tapez 0 pour non ");
validation_PartiesJouees_Difficile = saisir_PartiesJouees_Difficile.nextInt();

     if(validation_PartiesJouees_Difficile == 1){
     nbre_parties_gagnees_Difficile++;
     saisir_tempsResolution_Difficile = new Scanner(System.in);
     System.out.println("Combien de temps avez-vous mis pour remplir la grille, donnez le temps en minutes?");
     validation_tempsResolution_Difficile = saisir_tempsResolution_Difficile.nextInt();
            condition_tempsResolution_Difficile = 1;                                                                                                 
      
     } else
     validation_PartiesJouees_Difficile = 0;
     nbre_parties_nonterminees_Difficile++;

Posté par
trapangle
re : Problème avec Java 04-05-17 à 19:15

Non, nbre_parties_jouees n'est incrémentée nulle part.
nbre_parties_jouees_Difficile++ n'a aucun effet sur nbre_parties_jouees.

Posté par
shana1803
re : Problème avec Java 04-05-17 à 19:41

trapangle @ 04-05-2017 à 19:15

Non, nbre_parties_jouees n'est incrémentée nulle part.
nbre_parties_jouees_Difficile++ n'a aucun effet sur nbre_parties_jouees.


Si je l'incrémente quelque part je n'aurai pas ce problème si je comprend bien et je peux donc l'initialiser à 0 dans mes variables. C'est bien ça ?

Posté par
trapangle
re : Problème avec Java 04-05-17 à 19:42

Je ne sais pas, je n'ai pas lu tout ton code. Essaie et tu verras bien ce qui se passe.

Posté par
shana1803
re : Problème avec Java 04-05-17 à 20:45

Maintenant ça affiche :
java.util.InputMismatchException

Ca équivaut à quoi ça ?

Posté par
trapangle
re : Problème avec Java 04-05-17 à 20:53

Jamais vu auparavant, d'après Google c'est un Scanner qui renvoie ça quand le token ne correspond pas au type attendu.

Posté par
shana1803
re : Problème avec Java 04-05-17 à 21:06

J'ai un problème dans les méthodes de mes niveaux. Ma structure ressemble à ça:

public static void NiveauFacile()
  {
if (validation_niveau == 1) {
nbre_parties_jouees_Facile++;
nbre_parties_jouees++;

do {   
saisir_PartiesJouees_Facile = new Scanner(System.in);
System.out.println("Avez-vous gagné la partie?");                    
System.out.println(" Tapez 1 pour oui ");
System.out.println(" Tapez 0 pour non ");
validation_PartiesJouees_Facile = saisir_PartiesJouees_Facile.nextInt();

     if(validation_PartiesJouees_Facile == 1){
     nbre_parties_gagnees_Facile++;
     nbre_parties_gagnees++;
     saisir_tempsResolution_Facile = new Scanner(System.in);
     System.out.println("Combien de temps avez-vous mis pour remplir la grille, donnez le temps en minutes?");
     validation_tempsResolution_Facile = saisir_tempsResolution_Facile.nextInt();
            condition_tempsResolution_Facile = 1;                                                                                                   
      
     } else
     validation_PartiesJouees_Facile = 0;
     nbre_parties_nonTerminees_Facile++;
     nbre_parties_nonTerminees++;
}
while (condition_PartiesJouees_Facile == 1);
  {
       System.out.println("Voulez-vous rejouer d'autres parties? (o/n)");
       saisir_recommencer = new Scanner(System.in);
       validation_recommencer = saisir_recommencer.nextLine();  
                          
         if(condition_recommencer == "o"){
            validation_niveau = 1;         
    
         } else Afficher_Statistiques();     
   }   
}
  }

Posté par
trapangle
re : Problème avec Java 04-05-17 à 21:21

Je ne crois pas que tu vas trouver quelqu'un pour lire ton code et trouver l'erreur à ta place. Ça fait partie de la programmation, chercher quelle ligne de code renvoie une erreur et régler les problèmes un par un.

C'est rare qu'on écrive un code et que ça marche tout de suite sans aucun problème à régler.

Quand tu as trouvé le problème, si tu ne comprends pas, tu peux poser la question.

Posté par
shana1803
re : Problème avec Java 05-05-17 à 00:43

Alors pour ceux qui vont peut-être rencontrer le même problème, pour éviter l'erreur j'ai dû rajouter:

import java.util.InputMismatchException;

Posté par
bbomaths
re : Problème avec Java 05-05-17 à 06:53


Bonjour.

Je ne suis pas un spécialiste de Java mais en me fondant sur d'autres langages comme le C (j'en suis toujours à "Java = C sans pointeurs"), je peux peut-être apporter une modeste aide

Tout d'abord dire que ce code même s'il y a des problèmes, est facile à lire même si on peut l'améliorer On verra cela à la fin...

3 questions :

Q1 : comment as-tu résolu le problème de la division par 0 ?

Q2 : pourquoi les lignes :

public static int nbre_parties_nonTerminees = (resultat_nbre_parties_jouees - resultat_nbre_parties_gagnees);
public static int validation_tempsResolution = ((validation_tempsResolution_Facile + validation_tempsResolution_Moyen + validation_tempsResolution_Difficile)/3);
public static int nbre_parties_jouees = (nbre_parties_jouees_Facile + nbre_parties_jouees_Moyen + nbre_parties_jouees_Difficile);

et non :

public static int nbre_parties_nonTerminees = 0 ;
public static int validation_tempsResolution =  0 ;
public static int nbre_parties_jouees = 0 ;

Java serait-il capable de se souvenir en temps-réel que le contenu d'une variable dépend du contenu d'autres variables ?

Q3 : dans ton message du 04-05-17 à 21:06, tu écris le code suivant (et que j'ai remis en forme) :


public static void NiveauFacile()
{
   if (validation_niveau == 1)
   {
      nbre_parties_jouees_Facile++ ;
      nbre_parties_jouees++ ;

      do
      {
         saisir_PartiesJouees_Facile = new Scanner(System.in) ;
         System.out.println("Avez-vous gagné la partie?") ;
         System.out.println(" Tapez 1 pour oui ") ;
         System.out.println(" Tapez 0 pour non ") ;
         validation_PartiesJouees_Facile = saisir_PartiesJouees_Facile.nextInt() ;

         if (validation_PartiesJouees_Facile == 1)
         {
            nbre_parties_gagnees_Facile++ ;
            nbre_parties_gagnees++ ;
            saisir_tempsResolution_Facile = new Scanner(System.in) ;
            System.out.println("Combien de temps avez-vous mis pour remplir la grille, donnez le temps en minutes?") ;
            validation_tempsResolution_Facile = saisir_tempsResolution_Facile.nextInt() ;
            condition_tempsResolution_Facile = 1 ;
         }
         else
            validation_PartiesJouees_Facile = 0 ;

         nbre_parties_nonTerminees_Facile++ ;
         nbre_parties_nonTerminees++ ;
      } while (condition_PartiesJouees_Facile == 1) ;

???   {
         System.out.println("Voulez-vous rejouer d'autres parties? (o/n)") ;
         saisir_recommencer = new Scanner(System.in) ;
         validation_recommencer = saisir_recommencer.nextLine() ;

         if(condition_recommencer == "o")
         {
            validation_niveau = 1 ;
         }
         else
            Afficher_Statistiques() ;
???   }
   }
}


Des crochets seuls qu'on retrouve ailleurs ? Est-ce fait exprès ?

Posté par
bbomaths
re : Problème avec Java 05-05-17 à 07:07

La ligne :


         saisir_PartiesJouees_Facile = new Scanner(System.in) ;

ne devrait-elle pas s'écrire:

         Scanner saisir_PartiesJouees_Facile = new Scanner(System.in) ;


Java étant typé et qu'une variable locale est déclarée ?

Posté par
bbomaths
re : Problème avec Java 05-05-17 à 07:37

Je pense, sauf erreur de ma part, qu'il y a une confusion entre variable globale et variable locale.

Exemple, au début du code, tu écris :


static Scanner saisir_PartiesJouees_Facile = new Scanner(System.in) ;


La variable PartiesJouees_Facile  est créée comme variable globale accessible de partout.

Or dans ta fonction NiveauFacile( ), il me semble que tu recrées une variable locale qui porte le même nom et qui ne peut être utilisée que dans la fonction NiveauFacile( ). D'où, peut-être, tes soucis...

Posté par
bbomaths
re : Problème avec Java 05-05-17 à 11:43

Remarque :

Dans la boucle do... while suivante:


do
{
   saisir_PartiesJouees_Facile = new Scanner(System.in) ;
   System.out.println("Avez-vous gagné la partie?") ;
   System.out.println(" Tapez 1 pour oui ") ;
   System.out.println(" Tapez 0 pour non ") ;
   validation_PartiesJouees_Facile = saisir_PartiesJouees_Facile.nextInt() ;

   if (validation_PartiesJouees_Facile == 1)
   {
      nbre_parties_gagnees_Facile++ ;
      saisir_tempsResolution_Facile = new Scanner(System.in) ;
      System.out.println("Combien de temps avez-vous mis pour remplir la grille, donnez le temps en minutes?") ;
      validation_tempsResolution_Facile = saisir_tempsResolution_Facile.nextInt() ;
      condition_tempsResolution_Facile = 1 ;
   }
   else
      validation_PartiesJouees_Facile = 0 ;

   nbre_parties_nonterminees_Facile++ ;

} while (condition_PartiesJouees_Facile == 1) ;


Si je rentre un 2, on ne passe pas dans le if (validation_PartiesJouees_Facile == 1){} mais dans le else et, dans tous les cas, la variable nbre_parties_nonterminees_Facile est incrémentée...

Posté par
shana1803
re : Problème avec Java 08-05-17 à 04:00

J'ai réussi à arranger ma boucle et tout.
Mes j'ai toujours du mal avec mes calculs: taux de réussite et mon temps moyen parce que je dois faire une division avec un zéro si il n'y a pas de partie gagnée alors ma division comporte un zéro.

J'essaie d'initialiser ma variable en utilisant if mais je ne sais pas où mettre mon if
if (nbre_parties_gagnée>0) System.out.println("...");

Est-ce que je le mets avant ou après tous mes system.out.println:

         System.out.println("---------------------------Statistiques détaillées--------------------------");
              
  System.out.println("------Statistiques niveau facile ");
  System.out.println("Nombre de parties non terminées: " + String.valueOf(nbre_parties_jouees_Facile - nbre_parties_gagnees_Facile));
  System.out.println("Nombre de parties gagnées: " + nbre_parties_gagnees_Facile + " " + "Temps de résolution moyen: " + validationmoyen_tempsResolution_Facile);
  System.out.println("Nombre total de parties jouées: " + nbre_parties_jouees_Facile);
if (nbre_parties_nonTerminees_Facile == 0){
System.out.println("Taux de réussite du joueur :100%");
condition_tauxreussite_Facile = 1;
}else{ tauxreussite_Facile = nbre_parties_nonTerminees_Facile / (nbre_parties_jouees_Facile * 100);}  

System.out.println("Taux de réussite du joueur : " + tauxreussite_Facile + "%");

Posté par
bbomaths
re : Problème avec Java 08-05-17 à 06:05

Bonjour.

Une suggestion :



public static void Afficher_Statistiques()
{
   int nbre_parties_gagnees_Facile = nbre_parties_jouees_Facile - nbre_parties_nonterminees_Facile ;
   int nbre_parties_gagnees_Moyen = nbre_parties_jouees_Moyen - nbre_parties_nonterminees_Moyen ;
   int nbre_parties_gagnees_Difficile = nbre_parties_jouees_Difficile - nbre_parties_nonterminees_Difficile ;

   int tauxreussite_Facile ;
   int tauxreussite_Moyen ;
   int tauxreussite_Difficile ;
   int tauxreussite_Global ;

   /****************************************************************************
   **** 3. RESULTATS STATISTIQUES SUDOKU ***************************************
   ****************************************************************************/

   System.out.println("**** Statistiques Sudoku ********************************") ;

   System.out.println("---- Informations personnelles") ;
   System.out.println(" Nom                             :" + " " + validation_nom + ".") ;
   System.out.println(" Prénom                          :" + " " + validation_prenom + ".") ;
   System.out.println(" Âge                             :" + " " + validation_age + " ans.") ;

   /****************************************************************************
   **** 3. RESULTATS STATISTIQUES DÉTAILLÉES ***********************************
   ****************************************************************************/

   System.out.println("-- Statistiques détaillées ------------------------------") ;

   System.out.println("---- Statistiques niveau facile ") ;
   System.out.println(" Nombre total de parties jouées  : " + nbre_parties_jouees_Facile) ;
   System.out.println(" Nombre de parties non terminées : " + nbre_parties_nonterminees_Facile) ;
   System.out.println(" Nombre de parties gagnées       : " + nbre_parties_gagnees_Facile) ;

   if (nbre_parties_jouees_Facile > 0)
   {
      tauxreussite_Facile = 100 * nbre_parties_nonterminees_Facile / nbre_parties_jouees_Facile ;
      System.out.println(" Taux de réussite du joueur   : " + tauxreussite_Facile + " %") ;
   }
   else
   {
      System.out.println(" Taux de réussite du joueur   : information non disponible ") ;
   }

   System.out.println(" Temps moyen de résolution       : " + validation_tempsResolution_Facile) ;

   System.out.println("---- Statistiques niveau moyen ") ;
   System.out.println(" Nombre total de parties jouées  : " + nbre_parties_jouees_Moyen) ;
   System.out.println(" Nombre de parties non terminées : " + nbre_parties_gagnees_Moyen) ;
   System.out.println(" Nombre de parties gagnées       : " + nbre_parties_nonterminees_Moyen) ;

   if (nbre_parties_jouees_Moyen > 0)
   {
      tauxreussite_Moyen = 100 * nbre_parties_nonterminees_Moyen / nbre_parties_jouees_Moyen ;
      System.out.println(" Taux de réussite du joueur   : " + tauxreussite_Moyen + " %") ;
   }
   else
   {
      System.out.println(" Taux de réussite du joueur   : information non disponible ") ;
   }

   System.out.println(" Temps moyen de résolution       : " + validation_tempsResolution_Moyen) ;

   System.out.println("---- Statistiques niveau difficile ") ;
   System.out.println(" Nombre total de parties jouées  : " + nbre_parties_jouees_Difficile) ;
   System.out.println(" Nombre de parties non terminées : " + nbre_parties_gagnees_Difficile) ;
   System.out.println(" Nombre de parties gagnées       : " + nbre_parties_nonterminees_Difficile) ;

   if (nbre_parties_jouees_Difficile > 0)
   {
      tauxreussite_Difficile = 100 * nbre_parties_nonterminees_Difficile / nbre_parties_jouees_Difficile ;
      System.out.println(" Taux de réussite du joueur   : " + tauxreussite_Facile + " %") ;
   }
   else
   {
      System.out.println(" Taux de réussite du joueur   : information non disponible ") ;
   }

   System.out.println(" Temps moyen de résolution       : " + validation_tempsResolution_Difficile) ;

   /****************************************************************************
   **** 3. RESULTATS STATISTIQUES GLOBALES *************************************
   ****************************************************************************/

   System.out.println("-- Statistiques globales --------------------------------") ;

   System.out.println(" Nombre total de parties jouées  : " + nbre_parties_jouees) ;
   System.out.println(" Nombre de parties perdues       : " + nbre_parties_perdues) ;
   System.out.println(" Nombre de parties gagnées       : " + nbre_parties_gagnees) ;

   if (nbre_parties_jouees > 0)
   {
      tauxreussite_Global = 100 * nbre_parties_gagnees / nbre_parties_jouees ;
      System.out.println(" Taux de réussite du joueur   : " + tauxreussite_Global + " %") ;
   }
   else
   {
      System.out.println(" Taux de réussite du joueur   : information non disponible ") ;
   }

   System.out.println(" Temps de résolution moyen: " + validation_tempsResolution) ;
}

Répondre à ce sujet

Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster :

Connexion / Inscription Poster un nouveau sujet
Une question ?
Besoin d'aide ?
(Gratuit)
Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.


Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !