【问题标题】:I cannot figure out how to take user input in a comma-separated list and place it into an ArrayList我无法弄清楚如何在逗号分隔的列表中获取用户输入并将其放入 ArrayList
【发布时间】:2015-02-19 04:57:32
【问题描述】:

我正在尝试向用户显示文本,然后用户键入一个逗号分隔的全名列表(名字和姓氏),然后按 Enter,每个全名都放入一个 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 + ", ");
}

会发生什么是“组名:”显示,我输入任何我想要的名称,然后按 Enter,然后显示“名称:”,我输入“a aa, b bb, c cc”并按 Enter,然后没发生什么事。我期望发生的是arraylist的第一个元素设置为“aa”,第二个元素设置为“b bb”,第三个元素设置为“c cc”,因此它将打印“a aa,b bb,c cc , " (我知道这看起来很糟糕,但这并不重要,我现在只是使用它来确保正确填充 ArrayList,但事实并非如此)。但是扫描仪似乎认为仍然有输入,所以它卡在了 while 循环中。我一直在尝试很多不同的方法来解决这个问题,其中一些使用布尔值非常复杂,试图在按下 enter 后打破 while 循环。我已经尝试了几个小时,但一切都失败了。非常感谢任何帮助。

【问题讨论】:

    标签: java arrays arraylist


    【解决方案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();
    

    【讨论】:

    • 这行得通,谢谢。虽然,由于某种原因,我不得不在组名和名称请求之间随机插入一个 in.nextLine(),否则它会在我有机会输入任何内容之前立即询问组名然后立即询问名称。最后我的工作代码看起来和你的一样,但是在第 4 行和第 5 行之间我输入了.nextLine();
    【解决方案2】:

    有两个问题。首先,使用 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 + ", ");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 2019-07-01
      相关资源
      最近更新 更多