2017-04-26 1 views
0
System.out.println("Enter guest surName"); 
String roomName = input.next(); 
int num = input.nextInt(); 

Par exemple quand je rentre « Michael Jackson » je reçois cette erreur. Je comprends que l'erreur est due au fait que le deuxième mot est transmis à la méthode nextInt(). Mais je ne sais pas comment le résoudre.si l'utilisateur entre deux mots pour le prochain() du scanner, le deuxième mot est transféré à la méthode nextInt() qui suit provoquant une inputMismatchException

Et je ne peux pas utiliser nextLine() en raison de la nature du reste du programme.

+2

Pourquoi ne pas utiliser la ligne suivante? Cela ne fait aucune différence dans l'extrait que vous avez affiché, sauf que vous n'obtiendrez plus votre erreur d'erreur de saisie. – matt

Répondre

2

Vous voulez faire nextLine au lieu de next: doc here

String roomName = input.nextLine(); 

System.out.println("Enter guest number"); 
int num = input.nextInt(); 
0

au lieu de String roomName = input.next(); utilisation String roomName = input.nextLine();

Scanner input= new Scanner(System.in); 
System.out.println("Enter guest surName"); 
String roomName = input.nextLine(); 
int num = input.nextInt(); 
3

Vous pouvez changer le séparateur de l'objet du scanner. La valeur par défaut est un espace

input.useDelimiter("\n"); 

Par exemple, cela attendra jusqu'à ce que la ligne soit terminée. Et puis vous pourriez utiliser next() pour attraper correctement l'entrée.

Si vous ne pouvez pas utiliser next Line(), vous devez changer le délimiteur en espace après l'entrée. Pour éviter les inconvénients que je ne connais pas.

0

Essayez avec le code ci-dessous:

import java.util.Scanner; 
class Test{ 

public static void main (String args[]){ 

Scanner input= new Scanner(System.in); 
System.out.println("Enter guest surName"); 
String roomName = input.next(); 
System.out.println("roomName ="+roomName); 

String num = input.nextLine(); 
System.out.println("num ="+num); 

} 
}