Java 如何打印用花括号分隔的逗号数组列表?

Java 如何打印用花括号分隔的逗号数组列表?,java,arraylist,printing,comma,curly-braces,Java,Arraylist,Printing,Comma,Curly Braces,如何在Java中打印逗号分隔的字符串列表?例如,一个有三个成员“母亲”、“父亲”和“女儿”的家庭应打印为 There is a family consists of { Mother, Father, Daughter } 还是空无一人的家庭 There is a family consists of { } 我写了这个,但它无法打印字符串列表: String[] family = {" "}; String separator = ""; Syste

如何在Java中打印逗号分隔的字符串列表?例如,一个有三个成员“母亲”、“父亲”和“女儿”的家庭应打印为

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(" }");

谢谢大家!

尝试以下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);
//定义数组列表
List family=array.asList(“母亲”、“父亲”、“女儿”);
//StringJoiner类使用给定的saperator和
//列表的开始字符和结束字符
//下面的Joiner将列表项与“,”字符和
//在列表的开头添加“{”,在列表的末尾添加“}”
StringJoiner strJoin=新的StringJoiner(“,”,“{,“}”);
//下面是Java8中简化的Lambda表达式
//用forEach遍历族列表
//(s) 表示该列表中的每个元素,并
//我们只是在strjoin中添加了这个
family.forEach((s)->strJoin.add(s));
//打印字符串joiner对象
系统输出打印LN(strJoin);
输出: {母亲、父亲、女儿}

希望上面的解释能帮助您理解代码(如承诺的那样)。这里有一些提示可以帮助您完成尝试

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

  String[] family = {" "};
    String separator = "";
    System.out.print("{ ");
    for (String word : family) {
        System.out.print(separator);
        System.out.print(word);
        separator = " ";
    }
    System.out.print(" }");
}
我假设这是在
中具有正确签名的
main
方法中

  • 系列
    声明不正确:

     String[] family = {" "};
    
    这不是表示空数组的方式。(它实际上是一个包含一个字符串的数组,由一个空格组成。这可能解释了您的一些困难!!)

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

    String[] family = {};
    String[] family = new String[0];
    String[] family = new String[]{};
    
  • 分隔符不应为“
    。应该是逗号。(不完全是……但是试试看。)

  • 您不需要更改循环中的分隔符。分隔符应始终为逗号

  • 如果您按照上述步骤操作,那么您将得到如下输出:

    {  }
    { ,Mother }
    { ,Mother,Father }
    { ,Mother,Father,Daughter }
    
    有两个问题仍然需要解决

  • 仅用逗号作为分隔符是不正确的。(您应该能够弄清楚该怎么办。)

  • 每当列表非空时,我们就有一个不需要的前导逗号。这个比较棘手。问题在于,这一顺序:

        System.out.print(separator);
        System.out.print(word);
    
    假设在我们现在打印的单词之前有一个“单词”。但当我们在名单的开头时,情况就不是这样了

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


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

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