Comment lire des chaînes à partir d'un Scanneur dans une console Java de l'application?

import java.util.Scanner;
class MyClass
{
    public static void main(String args[])
    {
        Scanner scanner = new Scanner(System.in);
        int employeeId, supervisorId;
        String name;
        System.out.println("Enter employee ID:");
        employeeId = scanner.nextInt();
        System.out.println("Enter employee name:");
        name = scanner.next();
        System.out.println("Enter supervisor ID:");
        supervisorId = scanner.nextInt();
    }
}

J'ai eu cette exception, tout en essayant de saisir un nom et de prénom.

Enter employee ID:
101
Enter employee name:
firstname lastname
Enter supervisor ID:
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at com.controller.Menu.<init>(Menu.java:61)
    at com.tests.Employeetest.main(Employeetest.java:17)

mais son travail si je n'entrez le nom de la première.

Enter employee ID:
105
Enter employee name:
name
Enter supervisor ID:
501

Ce que je veux, c'est de lire la chaîne de caractères complète si elle est donnée comme name ou firstname lastname. Quel est le problème ici?

Changement scanner.next() à scanner.nextLine().
sid=(scanner.nextInt()); elle attend un int et pas un string, c'est pourquoi il travaille avec le 501
L'appel de nextInt() a été un problème car il n'a pas pris la nouvelle ligne (lorsque vous appuyez sur entrée). Ainsi, l'appel de scanner.nextLine() qui fait le travail. Voir ma réponse et commentaire dans le code.

OriginalL'auteur 09Q71AO534 | 2013-07-17