Java: faire afficher message d'erreur quand..

Saperlipopiette Messages postés 15 Statut Membre -  
 Utilisateur anonyme -
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 19031 Statut Modérateur 3 020
 
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
 
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
Utilisateur anonyme
 
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 19031 Statut Modérateur 3 020
 
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
 
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