我无法弄清楚如何在逗号分隔列表中获取用户输入并将其放入ArrayList

时间:2015-02-19 04:57:32

标签: java arrays arraylist

我尝试向用户显示文本,然后用户键入以逗号分隔的全名列表(第一个和最后一个)然后点击回车,每个全名都放入一个ArrayList,然后是元素该列表将显示给用户。

所以我尝试了这个:

Scanner in = new Scanner(System.in);
ArrayList<String> members = new ArrayList<String>();
String[] groupName = new String[1];
System.out.print("Group Name: ");
groupName[0] = in.next().toLowerCase();
System.out.print("Names: ");
in.useDelimiter(",| ");
while (in.hasNext()){
    members.add(in.next().toLowerCase();
}
for (String m : members)
{
  System.out.println(m + ", ");
}

会发生什么&#34;组名:&#34;显示,我输入任何我想要的名称然后点击输入,然后&#34;姓名:&#34;显示,我输入&#34; a aa,b bb,c cc&#34;并按Enter键,然后没有任何反应。我期望发生的是,arraylist的第一个元素设置为&#34; aa&#34;,第二个元素为&#34; b bb&#34;,第三个元素为&#34; c cc&# 34;所以它会打印出aa,b bb,c cc,&#34; (我知道这看起来很糟糕,但它并不重要,我现在只是使用它来确保正确填充ArrayList,但它并不是这样)。但是扫描仪似乎认为仍有输入,因此它会在while循环中卡住。我一直在尝试很多不同的方法来解决这个问题,有些人在使用布尔值时试图在击中输入后突破while循环。我已经尝试了几个小时,一切都失败了。我真的很感激任何帮助。

2 个答案:

答案 0 :(得分:1)

您的问题是没有办法停止执行。

您是否可以使用names = in.nextLine()阅读整行名称并使用String.split(",")分割值?

Scanner in = new Scanner(System.in);
String[] groupName = new String[1];
System.out.print("Group Name: ");
groupName[0] = in.nextLine();
System.out.print("Names: ");
String names = in.nextLine();
String[] members = names.split(",");
System.out.println(Arrays.toString(members));
in.close();

答案 1 :(得分:0)

有两个问题。首先,使用in.nextLine()而不是in.next()。toLowerCase()。然后使用截取的输入字符串的split()函数,然后在数组中分割字符串。请尝试以下代码。

    Scanner in = new Scanner(System.in);
    ArrayList<String> members = new ArrayList<String>();
    System.out.print("Group Name: ");
    String ab = in.nextLine();
    String[] splitString = ab.split(", ");
    for (String string : splitString)
    {
        //System.out.println("splited string: " + string);
        members.add(string);
    }
    System.out.println("Names: ");
    for (String m : members)
    { 
        System.out.println(m + ", ");
    }