当前位置: 首页 > 知识库问答 >
问题:

我不知道如何在逗号分隔的列表中获取用户输入并将其放入ArrayList

朱炜
2023-03-14

我试图向用户呈现文本,然后用户键入一个逗号分隔的全名列表(第一个和最后一个),然后点击回车,每个全名被放置到一个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 + ", ");
}

然后输入“a,输入b,输入a,输入b,输入b,输入a,输入b,输入a,输入b,输入b,输入a,输入b,输入b,输入a,输入b,输入b,输入a,输入b,输入b,输入a,输入b,输入b,输入a,输入b,输入b,输入b,输入a,输入b,输入b,输入a,输入b,输入b,输入b。我希望arraylist的第一个元素被设置为“aaa”,第二个元素被设置为“bb”,第三个元素被设置为“ccc”,这样它就会打印“aaa,bb,ccc”。(我知道这看起来很糟糕,但其实并不重要,我现在只是用它来确保arraylist被正确填充,事实并非如此)。但是扫描器似乎认为仍然有输入,所以它被困在while循环中。我一直在尝试很多不同的方法来解决这个问题,一些非常复杂的方法是使用布尔函数,试图在按下enter键后打破while循环。我已经试了几个小时,但一切都失败了。我真的很感激任何帮助。

共有2个答案

陶鹏
2023-03-14

有两个问题。首先,在英语中使用。nextLine()而不是in。下一步()。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 + ", ");
    }
经福
2023-03-14

你的问题是没有办法阻止你被处决。

您可以使用name=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();
 类似资料:
  • 我在sessionList中有这种数据 现在,我想运行一个循环,将此数据放入hashmap,即键和值对,因为我想将hashmap数据发布到URL,所以我需要将会话列表中的所有值映射到hashmap中 我试过这样的东西,但它不起作用。 如您所见,我将一些字符串值放在字符串映射中,并将“date”和count值作为变量,以便可以在其中填充检索到的值。此“date”值应由逗号之前的sesionList数

  • 问题内容: 当我的输入为1 2 3(以空格分隔)时,该程序运行良好。但是,当我的输入为1,2,3(以逗号分隔)时,如何修改程序。 问题答案: 您可以使用nextLine方法读取字符串,并使用拆分方法将其以逗号分隔,如下所示: 此方法适用于仅用逗号分隔的3个值。 如果需要更改值的数量,可以使用循环从向量中获取值。

  • 问题内容: 我有一个表和值,如下所示 我需要如图所示的结果输出 注意: 值没有限制,即动态 问题答案: 这就是你所期望的 架构: 请将那些用逗号分隔的值拆分为“行”并应用“透视” 你会得到的结果 编辑: 现在,您需要进行动态数据透视,因为值没有限制。

  • 我做了这个程序来计算一组数字 输出如下所示 有什么办法可以让另一个逗号分开吗?

  • 问题内容: 我有一个简单的查询: 结果如下: 我想在一行中返回结果,所以像这样: 当然,我可以编写一个PL / SQL函数来完成这项工作(我已经在Oracle10g中做到了),但是对于此任务是否有更好的,最好是非Oracle特定的解决方案(或者可能是内置函数) ? 我通常会用它来避免子查询中出现多行,因此,如果一个人有一个以上的公民身份,我不希望他/他在列表中重复。 更新 :我的函数看起来像这样:

  • 问题内容: 假设我有一个名为“ companies”的视图,该视图无法修改: 还有一个称为“联系人”的视图: 最终目标是让我编写一个查询,该查询可以交叉引用人员ID并显示电子邮件和公司,例如: 我有没有办法在不编写函数或过程的情况下在查询中加入或处理此逗号分隔的标识符列表? 您可以假设“合法联系人”最多具有25个标识符,且始终采用相同格式,且始终用逗号分隔 问题答案: 您可以拆分使用正则表达式的列