Classe Scanner qui bug

alaide -  
 alaide -
Bonjour,

J'ai une méthode run dans laquelle j'ai :

Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir un nombre :");
int str = sc.nextInt();
System.out.println("Vous avez saisi le nombre : " + str);


Quand j'arrive à Veuillez saisir un nombre :, je saisis un nombre mais çà ne passe pas à l'étape suivante c'est à dire Vous avez saisi le nombre :...

Je boucle en saisissant des données...

Que faire ? Je suis vraiment perdu !

Merci pour votre aide !
A voir également:

2 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Le code est complet ou il y a autre chose ?

Que donne l'affichage suivant :
System.out.println(System.in);
System.out.println(sc);
0
alaide
 
Bonsoir,

Merci de m'aider !

Voici le code complet de la méthode appelée :

public void run() {

		System.out.println("Bienvenue dans l'Application");
		Scanner sc = new Scanner(System.in);
		System.out.println("Veuillez saisir un nombre :");
		int str = sc.nextInt();
		System.out.println("Vous avez saisi le nombre : " + str);

	
	}


0
alaide
 
Sinon avant exécution voici le résultat des System.out.println(System.in) et sc :
[java] java.io.BufferedInputStream@649a8a68

[java] java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\ ][decimal separator=\,][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q�\E][infinity string=\Qâ^z\E]
0
alaide
 
Je ne comprends pas car en créant une classe avec simplement un main et ces infos, çà passe bien ! Mais je dois vraiment utiliser cette méthode run.
0
KX Messages postés 19031 Statut Modérateur 3 020
 
C'est le run de la classe Thread ?
Si tu lances plusieurs Thread en même temps je comprendrais que ça bug. Il faut que tu essayes avec un seul objet Scanner sur le clavier en mettant un bloc de synchronisation

private static final Scanner sc = new Scanner(System.in);

public void run()
{
	System.out.println("Bienvenue dans l'Application");
	
	synchronized(sc)
	{
		System.out.print("Veuillez saisir un nombre : ");
		int str = sc.nextInt();
		System.out.println("Vous avez saisi le nombre : " + str);
	}
}
0
alaide
 
J'ai juste une classe qui implémente Runnable mais je n'ai pas de thread.
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Et comment tu utilises cette méthode ? Dans quel contexte tu l'appelles ?
Est-ce que mon code change quelque chose à ton problème ?
0