This question already exists:
Scanner issue when using nextLine after nextXXX [duplicate]
                        
                6年前关闭。
            
        

我是Java世界的新手,
我正在编写一个简单的程序,但是有一个问题:

这是代码:

while(choix!=7) {

    System.out.println("Tapez un choix :") ;
    choix=s.nextInt();

    switch (choix) {
    case 1 : {  } break ;

    case 2 :{
        c.vider() ; }break ;

    case 3 :{
        int i,n; System.out.println("donnez le nombree de livres à ajouter");
        n=s.nextInt();
        for(i=0;i<n;i++) c.ajouter() ;
        }break ;

    case 4:{
        c.Index() ;
        c.affichagemotsvides();
        c.affichageindex();
        } break ;

    case 5 :{
        //s.wait();
        String aut ;


        System.out.println("Tapez le nom de l'auteur");


        aut=s.nextLine() ; //Here's the line where i want to read the string
        if (aut !=null)
        System.out.println("==========>"+aut);

        //livre l1 =new livre();
        //l1=c.rechercheAut(aut);
        //l1.afficher();
    }break ;


我第一次输入数字choix=s.nextInt();
我放5时,它的读法正确。
aut=s.nextLine() ;不要让我写我想输入的字符串。
这是输出:

1. Créer un Catalogue
2. Vider le Catalogue
3. Ajouter des livres dans le Catalogue
4. Générer l’Index du Catalogue
5. Rechercher dans le Catalogue, par Auteur
6. Rechercher dans le Catalogue, par Mot Clé
7. Quitter
Tapez un choix :
5
Tapez le nom de l'auteur
==========>
Tapez un choix :

最佳答案

s.nextLine() ;之前添加aut=s.nextLine() ;


尝试

    s.nextLine()
    aut=s.nextLine() ;


解释:正如波西米亚语在给定链接Scanner issue when using nextLine after nextXXX中所说

这是因为当您输入数字然后按Enter键时,input.nextInt()仅消耗数字,而不消耗“行尾”。执行input.nextLine()时,它会消耗掉第一个输入中缓冲区中的“行尾”。

相反,请在input.nextInt()之后立即使用input.nextLine()

关于java - Java Reading Line with Scanner ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20455167/

10-12 04:03