Java entier et equivalence

Résolu/Fermé
keurdange Messages postés 720 Date d'inscription lundi 8 novembre 2010 Statut Membre Dernière intervention 13 juillet 2016 - 10 juil. 2011 à 18:31
keurdange Messages postés 720 Date d'inscription lundi 8 novembre 2010 Statut Membre Dernière intervention 13 juillet 2016 - 10 juil. 2011 à 23:02
Bonjour,

j'aimerais savoir l'équivalence de clrscr() "clear screen" pour effacer l'ecran et de gotoxy en Java. j'aimerais aussi savoir comment obliger un utilisateur à entrer un entier. (s'il saisi un caractère ou chaine de charactere par exemple).

Merci


A voir également:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 10/07/2011 à 18:55
Pour clrscr() et gotoxy() tu ne peux pas, car ça dépend de la console.

Pour la saisie d'un entier c'est faisable, cependant si l'utilisateur veut rentrer "toto" à la place de 12, rien ne pourra l'en empêcher. Il faut juste détecter l'erreur et redemander à l'utilisateur de rentrer un nombre.

public static int saisirEntier(String msg)
{	
	try
	{
		System.out.print(msg);
		return Integer.parseInt(new Scanner(System.in).nextLine());
	}
	catch (NumberFormatException e)
	{
		return saisirEntier(msg);
	}	
}

public static void main(String args[])
{	
	int n = saisirEntier("Entrez un nombre : ");
	System.out.println(n);
}
La confiance n'exclut pas le contrôle
2
keurdange Messages postés 720 Date d'inscription lundi 8 novembre 2010 Statut Membre Dernière intervention 13 juillet 2016 231
10 juil. 2011 à 19:19
peux tu m'expliquer comment tu as détecter l'erreur ici? En d'autres e commenter un peu le programme.
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
10 juil. 2011 à 19:42
Regarde la documentation de Integer.parseInt(String)
Cela génère une NumberFormatException si le String en entrée n'est pas transformable en int.
Donc je fais un try/catch pour récupérer cette exception et recommencer la saisie.
Quant à l'utilisation de Scanner je le crée avec System.in (le clavier) comme ça me permet de récupérer une chaîne de caractères avec nextLine() que je transforme donc avec parseInt.
En fait avec Scanner, il y a aussi une méthode nextInt() qui est très utile mais ça ferait pas exactement ce que tu veux...

/* msg : le message qui demande de rentrer un nombre */
public static int saisirEntier(String msg)
{	
	// On filtre les exceptions
	try
	{
		// On affiche le message
		System.out.print(msg);

		// On crée un Scanner sur l'entrée clavie
		Scanner sc = new Scanner(System.in);

		// On attend que l'utilisateur entre une ligne
		String str = sc.nextLine();

		// On transforme la ligne en nombre
		// Provoque une exception si ce n'est pas possible
		int n = Integer.parseInt(str);

		// Si on est arrivé ici c'est qu'il n'y a pas eu d'erreur
		// On renvoie la valeur entrée au clavier
		return n;
	}		
	// Si il y a eu des exceptions levées, on les récupères
	// Ici ce sera forcément NumberFormatException
	catch (NumberFormatException e)
	{		
		// On rappelle récursivement la fonction pour tout recommencer
		// De manière à ce que l'utilisateur entre un entier valide
		return saisirEntier(msg);
	}
}
0
keurdange Messages postés 720 Date d'inscription lundi 8 novembre 2010 Statut Membre Dernière intervention 13 juillet 2016 231
10 juil. 2011 à 19:59
ok mais j'ai un probleme avec le return de catch.

j'ai fait

catch (NumberFormatException e)
{
return Menu2(m);
}
Avec Menu2 la class et m la valeur saisie
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
10 juil. 2011 à 20:03
si Menu2 est un constructeur de ta classe, tu devras faire return new Menu2(m);
0
keurdange Messages postés 720 Date d'inscription lundi 8 novembre 2010 Statut Membre Dernière intervention 13 juillet 2016 231
10 juil. 2011 à 20:15
Peux pas.

public class Menu2 {
public static int main(String arg[]) throws IOException, InterruptedException

Il me souligne tout en rouge à partir de main(String...)
j'ai mis new Menu2() parcqi'il a refusé le Menu2(m).
m est une variable que j'ai utilisé dans switch(m). Comme m est lu dans try, il me de donner une valeur à m.
0