Java: faire afficher message d'erreur quand..

Fermé
Saperlipopiette Messages postés 14 Date d'inscription mardi 3 janvier 2012 Statut Membre Dernière intervention 7 février 2013 - 7 janv. 2012 à 17:30
 Utilisateur anonyme - 9 janv. 2012 à 17:04
Bonjour,

Une petite question: En java

public static void main(String[] args) {
Double x, y, z;
System.out.print("Combien consomme votre voiture en litre pour 100km?");
x=Terminal.lireDouble();

while (x<1 || x>15 ){
System.out.println ("Entrez une valeur supérieur ou égal à 1 litre ou inférieur a 10litres.");
System.out.println("Combien consomme votre voiture en litre pour 100km?");
x=Terminal.lireDouble();

Je voudrais que lorsque l'utilisateur saisit un caractère alphabétique, l'erreur soit détecté et que je puisse afficher un message d'erreur de mon choix et l'inviter à refaire une nouvelle saisit. Bien évidemment lorsque je fais mon jeu de test via Netbeans, il détecte l'erreur, mais je voudrais pouvoir inviter l'utilisateur via une boucle et un message à resaisir une valeur, correct cette fois ci.

Si quelqu'un a une idée. Elle est la bienvenue ^^

Merci d'avance pour toutes réponses (sauf celle désobligeantes)


A voir également:

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
7 janv. 2012 à 17:45
Il faudrait savoir ce qu'est Terminal.lireDouble, car ce n'est pas une méthode standard.
En particulier à quelle classe appartient l'exception détectée ?
0
Utilisateur anonyme
8 janv. 2012 à 19:36
Salut,

//...
public class La_classe
{
private static boolean errSaisie = true;
private static String messErr = "";
//....

public static void main(String[] args)
{
while(errSaisie)
         {
            errSaisie = false; //remis à true si erreur
            Double x, y, z; 
            System.out.print("Combien consomme votre voiture en litre pour 100km? ");
            x = lireDouble();
            System.out.println ("x = " + x);
            //x=Terminal.lireDouble(); 
            if(x<1 || x>9.99 )
            {
               System.out.println ("Entrez une valeur supérieur ou égal à 1 litre ou inférieure à 10 litres."); 
               errSaisie = true;
            }
         }
//............

}

         //Et dans le ou les catch de la méthode lireDouble():
      	catch (................ ...)
            {
               messErr = "Le message d'erreur du catch...";
               errSaisie = true;
            }
Cordialement,

Dan

0
Re,

Désolé je me rend compte que la méthode lireDouble() est dans la classe Terminal et ma que ma solution fonctionnerait avec une méthode de la classe utilisateur.

Je vais donc rectifier le tir sans pouvoir modifier car trop tard et donc envoyer le nouveau code...

boolean errSaisie = true; 
         while(errSaisie) 
         { 
            errSaisie = false; //remis à true si erreur 
            Double x, y, z;  
            System.out.print("Combien consomme votre voiture en litre pour 100km? "); 
            x = Terminal.lireDouble(); 
          // exemple: si la saisie n'est pas numérique la méthode lireDouble() doit retourner -1 
            if(x == -1) 
            { 
               System.out.println ("Entrée invalide.");  
               errSaisie = true; 
            } 
            else  
               if(x<1 || x>9.99 ) 
               { 
                  System.out.println ("Entrez une valeur supérieure ou égale à 1 litre ou inférieure à 10 litres.");  
                  errSaisie = true; 
               } 
         } 


Le message d'erreur pourait être affiché dans une boîte d'erreur.

Cordialement,

Dan

Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
9 janv. 2012 à 13:03
Je pense (à confirmer par Sapelipopette) que les erreurs de saisie doivent plutôt être du genre NumberFormatException ou InputMismatchException selon si lireDouble appelle Double.parseDouble, Scanner.nextDouble ou autre. La solution à apporter serait alors plutôt une gestion avec un try/catch...
0
Utilisateur anonyme
9 janv. 2012 à 17:04
Salut,

Oui KX et selon l'exception levée retourner une valeur telle que moins -1 mais sans le code de la méthode lireDouble() ...
0