Java: faire afficher message d'erreur quand..

Saperlipopiette Messages postés 15 Statut Membre -  
 danimo -
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)



--
Mon fils, au jour de ta naissance, même les forêts de Lordaeron ont murmuré ton nom...Arthas (...). Je te confie cela car lorsque ma vie s'achèvera, toi tu sera roi

2 réponses

  1. 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
  2. danimo
     
    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
    1. danimo
       
      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
    2. danimo
       
      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