while循环读取字符串时遇到麻烦

时间:2014-11-15 14:33:20

标签: java string list while-loop

我试图读取不同的名字和乐器,直到达到乐队成员的总数(在节目中早先询问)。程序读取金额,并读取名字。但是之后它失败的原因是它只读取了第一个名字,之后它不会打印任何名称或乐器。 下面的while循环是问题的最可能来源:

i = counter
while(i <= bandMembers)
    {
        System.out.println("What is band member " + i + "'s name?");
        kb.nextLine();
        String bName = kb.nextLine();
        System.out.println("What instrument does " + bName + " play?");
        kb.nextLine();
        String bNamePlay = kb1.nextLine();
        list = list + i + ":" + " " + bName + " - " + bNamePlay+ "\n";
        i++;
    }

如果我输入第一个名字为bName1:

,这就是它打印的内容
Band Members
--------------
1: bName1 - 
2:  - 
3:  - 

感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:0)

您应该使用

String bName = kb.next(); 

假设您使用的是扫描仪。

当你调用nextLine()时,它会读取同一行的剩余部分而不等待输入。

答案 1 :(得分:0)

我没有足够的代表对您遇到的问题发表评论: 我最初使用的是kb.next,但它读取了以空格分隔的每个单词作为下一个名称。例如,我会输入&#34; Jimmy松散的手&#34;它会正确地提示吉米的乐器,但它会询问乐队成员2的名字和#34;什么乐器会松动?&#34;同时。所以它把第二个词作为下一个名字。

你可能想要做的是删除&#34; kb.nextLine();&#34;在&#34; String bName = kb.nextLine();&#34; 我没有打开IDE来确认它,但这可能是它将第二个单词/字符串作为名称输入的原因。

答案 2 :(得分:0)

使用BufferedReader。这将解决您的问题。: -

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
i=counter;
while(i<=bandMembers){
System.out.println("Enter band member "+i+" name:-");
String bName=br.readLine();
System.out.println("What instrument does "+bName+" play?");
String bNamePlay=br.readLine();
list = list + i + ":" + " " + bName + " - " + bNamePlay+ "\n";
i++;
}