【问题标题】:How to print array lists comma separated with curly brackets? [duplicate]如何打印用大括号分隔的数组列表逗号? [复制]
【发布时间】:2020-10-11 00:14:35
【问题描述】:

如何在 Java 中打印用大括号分隔的字符串列表?例如,一个包含三个成员“Mother”、“Father”和“Daughter”的家庭应打印为

There is a family consists of { Mother, Father, Daughter }

或空的家庭

There is a family consists of { }

我写了这个,但它不能打印字符串列表:

String[] family = {" "};
String separator = "";
System.out.print("{ ");
for (String word : family) {
    System.out.print(separator);
    System.out.print(word);
    separator = " ";
}
System.out.print(" }");

谢谢!

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 我已将其添加到我的帖子中。谢谢!

标签: java arraylist printing comma curly-braces


【解决方案1】:

尝试如下所示的 StringJoiner,它将解决您的要求

        //Define the Array List
        List<String> family = Arrays.asList("Mother","Father","Daughter");

        //StringJoiner class joins elements with given saperator and 
        //Start and end characters of the List
        //Below Joiner joins list items with',' character and
        //add '{' at start of the list and '}' at end of the list 
        StringJoiner strJoin = new StringJoiner(",","{","}");

        //Below is the simplified Lambda expression in Java8
        //Traversing family list by forEach
        //(s) denotes every element in that list and
        //we are just adding that s into strjoin 
        family.forEach((s)->strJoin.add(s));

        //printing the string joiner object  
        System.out.println(strJoin);

输出: {母亲,父亲,女儿}

希望以上解释能帮助你理解代码

【讨论】:

  • 谢谢!它适用于有成员的家庭。但是,对于没有成员的家庭(empy family),括号内有逗号@Zulkarnain_Shaikh
  • @Philip - 这种方法适用于我的空列表。你确定你正确地实现了代码吗?在括号内获取逗号的唯一方法是使用包含空字符串"" 的列表。这不是你应该代表一个空荡荡的家庭的方式。并且空族应该是一个空列表,而不是包含空字符串的非空列表。
  • @philip - 是的,我已经测试了空白列表,它在输出中给出了 {}。确保您没有将任何参数传递给 as List ...您应该使用 List family = Arrays.asList();
  • 话虽如此。这个答案给你一些代码,但没有解释它是如何工作的。所以我不认为它真的有助于实现你的真正目标......应该学习如何为自己编写 Java 程序。因此,我建议 1) 您研究此代码的工作原理和原因,以及 2) 回到您最初的尝试并自己完成它……使用您所采用的方法。我会写我自己的答案给你一些提示。
  • @philip - 我已经编辑了解释代码每个步骤的答案......很乐意为您提供任何疑问......谢谢!
【解决方案2】:

(如承诺的那样)这里有一些提示可以帮助您完成您的尝试...

这是您的代码当前的样子:

  String[] family = {" "};
    String separator = "";
    System.out.print("{ ");
    for (String word : family) {
        System.out.print(separator);
        System.out.print(word);
        separator = " ";
    }
    System.out.print(" }");
}

我假设这是 inside main 方法,其签名正确,inside class

  1. family 声明不正确:

     String[] family = {" "};
    

    这不是您表示空数组的方式。 (它实际上是一个包含一个字符串的数组,它由一个空格组成。这可以解释你的一些困难!)

    Java 中的空字符串数组可以声明为:

    String[] family = {};
    String[] family = new String[0];
    String[] family = new String[]{};
    
  2. 分隔符不应为""。它应该是一个逗号。 (不完全是……但试试吧。)

  3. 您无需更改循环中的分隔符。分隔符应始终为逗号。

如果您按照上述操作,那么您将获得如下输出:

{  }
{ ,Mother }
{ ,Mother,Father }
{ ,Mother,Father,Daughter }

还有两个问题需要解决。

  1. 仅使用逗号作为分隔符是不正确的。 (你应该能够弄清楚该怎么做。)

  2. 只要列表非空,我们就会有一个不需要的前导逗号。这个比较棘手。问题是这个序列:

        System.out.print(separator);
        System.out.print(word);
    

    假设在我们现在打印的那个之前有一个“单词”。但当我们位于列表的开头时,情况并非如此。

处理多余逗号的一种方法是不在列表开头输出分隔符。但是怎么做呢?

提示 在列表的开头使用标志变量true,并在打印第一个元素后将其更改为false。 (并使用标志来决定是否需要输出分隔符。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2015-05-25
    • 2021-07-20
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    相关资源
    最近更新 更多