Soucis JAVA vérification d'une lecture

Fermé
benjamin.rousseau Messages postés 15 Date d'inscription dimanche 20 septembre 2009 Statut Membre Dernière intervention 21 janvier 2010 - 18 déc. 2009 à 23:11
benjamin.rousseau Messages postés 15 Date d'inscription dimanche 20 septembre 2009 Statut Membre Dernière intervention 21 janvier 2010 - 21 janv. 2010 à 17:23
Bonjour,

Voila, j'ai un mini-jeu en programme java.
Et en faite, au début de la partie j'ai une lecture d'un nombre.
Je voudrais qu'avec une boucle while je vérifie que ce que rentre le joueur ne soit pas une chaine de caractère .
Mais je n'y arrive pas, je ne trouve pas.
Comment vérifier que ce qu'il rentre est un nombre compris entre 1 et ...x et pas une chaine de caractère?
Merci beaucoup
A voir également:

5 réponses

scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
19 déc. 2009 à 13:38
Voici un exemple :

import java.util.*;

public class Test
{
	public static final int MAX = 50; // nombre maximum
	public static Scanner sc = new Scanner(System.in);
	
	public static void main(String[] args)
	{
		int nbre = 0;
		boolean ok = false;
		
		do
		{
			System.out.print("Entrez un nombre entier entre 1 et " + MAX + " : ");
			
			nbre = sc.nextInt();
			
			if(nbre >= 1 && nbre <= MAX)
			{
				ok = true;
			}
			else
			{
				System.out.println("Le nombre n'est pas compris entre 1 et " + MAX + " !\n");
			}
		}while(!ok);
		
		System.out.println("\nLe nombre " + nbre + " est bon !");
	}
}
0
Utilisateur anonyme
20 déc. 2009 à 21:56
Salut,

Ok mais il faut vérifier qu'on a bien entré une valeur numérique.

import java.util.*;
    public class TestNbre 
   { 
      private static final int MAX = 50; // nombre maximum 
      private static Scanner sc = new Scanner(System.in);
      
       public static void main(String[] args) 
      { 
         int nbre = 0;
         boolean encore = true;
         boolean ok = false;
         while(encore)
         {
            encore = false;
            do 
            {
               nbre = 0;
               System.out.print("Entrez un nombre entier >0 et <" + (MAX+1) + " : ");
               try
               {
                  nbre = sc.nextInt();
               
                  if(nbre >= 1 && nbre <= MAX) 
                  { 
                     ok = true; 
                  } 
                  else 
                  { 
                     System.out.println("\nLe nombre " + nbre + " n'est pas une valeur >0 et <"
                        + (MAX+1) + "!!!\n");
                     ok = false;
                  }
               }
                  catch(InputMismatchException iMe) 
                  { 
                     System.err.printf( "\nNON NUM. (ou trop long pour int)\n", 
                       iMe); 
                     sc.nextLine(); 
                     System.out.println( 
                        "Vous devez entrer une valeur numerique >0 et <51\n");
                     ok = false;
                  }
            
            }while(!ok);
             
            System.out.println("\n\nLe nombre " + nbre + " est bon !");
            
            sc.nextLine();
            
            System.out.print("\nVoulez vous entrer un autre nombre? oui par defaut "
               + "(val. quelconque si non): ");
            String ouiNon = sc.nextLine();
            if(ouiNon.equals(""))
            {
               System.out.println("");
               encore = true;
            }
            else
            {
               encore = false;
               System.out.println("\nFIN");
            }
         }
      } 
   }



Cordialement,

Dan
0
benjamin.rousseau Messages postés 15 Date d'inscription dimanche 20 septembre 2009 Statut Membre Dernière intervention 21 janvier 2010
21 déc. 2009 à 11:41
merci beaucoup,

mais il n'existe pas quelque chose de plus simple ? Car moi c'est un programme simple, je test deja avec un if pour que le nombre ne soit pas négatif.
Cela serait plus imple avec une condition..
0
Utilisateur anonyme
22 déc. 2009 à 04:02
Re,

Il faut alors AVANT que tu fasses tes contrôles "avec un if" pour savoir s'il est dans les limites 1 à x, et s'il est positif, que tu contrôle s'il ne contient que du numérique:

Scanner sc = new Scanner(System.in); 
         int nbre;
         boolean ok = false;
      
         do 
         {
           ok = true;
            nbre = 0;
            System.out.print("Entrez un nombre entier: ");
            try
            {
               nbre = sc.nextInt();
            }
                catch(InputMismatchException iMe) 
               { 
                  System.err.printf( "\nNON NUM. (ou trop long pour int)\n"); 
                  sc.nextLine(); 
                  System.out.println( 
                        "Vous devez entrer une valeur numerique\n");
                  ok = false;
               }
         }while(!ok);
// suite du traitement);

Ce n'est pas énorme non! et c'est fiable...

Cordialement,

Dan
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
benjamin.rousseau Messages postés 15 Date d'inscription dimanche 20 septembre 2009 Statut Membre Dernière intervention 21 janvier 2010
21 janv. 2010 à 17:23
Merci beaucoup pour vos réponses c'est sympa=) Merci encore
0