如何打印用大括号分隔的数组列表?
How to print array lists comma separated with curly brackets?
如何在 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);
输出:
{母亲,父亲,女儿}
希望以上解释能帮助您理解代码
(正如承诺的那样)这里有一些提示可以帮助您完成您的尝试...
这是您的代码当前的样子:
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 a class
.
family
声明不正确:
String[] family = {" "};
这不是您表示空数组的方式。 (它实际上是一个包含一个字符串的数组,它由一个space组成。这可能会解释你的一些困难!!)
Java 中的空字符串数组可以声明为:
String[] family = {};
String[] family = new String[0];
String[] family = new String[]{};
分隔符不应该是""
。它应该是一个逗号。 (不完全是......但试试吧。)
您不需要更改循环中的分隔符。分隔符应始终为逗号。
如果你按照上面的步骤进行操作,那么你会得到这样的输出:
{ }
{ ,Mother }
{ ,Mother,Father }
{ ,Mother,Father,Daughter }
还有两个问题需要解决。
只用逗号作为分隔符是不正确的。 (您应该能够弄清楚该怎么做。)
当列表为 non-empty 时,我们有一个不需要的前导逗号。这个比较棘手。问题是这个序列:
System.out.print(separator);
System.out.print(word);
假设我们现在打印的那个之前有一个“字”。但当我们位于列表的开头时,情况并非如此。
处理多余逗号的一种方法是不在列表的开头输出分隔符。但是怎么办?
HINT 在列表的开头使用标志变量 true
并在打印第一个元素后将其更改为 false
。 (并使用标志来决定是否需要输出分隔符。)
如何在 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);
输出: {母亲,父亲,女儿}
希望以上解释能帮助您理解代码
(正如承诺的那样)这里有一些提示可以帮助您完成您的尝试...
这是您的代码当前的样子:
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 a class
.
family
声明不正确:String[] family = {" "};
这不是您表示空数组的方式。 (它实际上是一个包含一个字符串的数组,它由一个space组成。这可能会解释你的一些困难!!)
Java 中的空字符串数组可以声明为:
String[] family = {}; String[] family = new String[0]; String[] family = new String[]{};
分隔符不应该是
""
。它应该是一个逗号。 (不完全是......但试试吧。)您不需要更改循环中的分隔符。分隔符应始终为逗号。
如果你按照上面的步骤进行操作,那么你会得到这样的输出:
{ }
{ ,Mother }
{ ,Mother,Father }
{ ,Mother,Father,Daughter }
还有两个问题需要解决。
只用逗号作为分隔符是不正确的。 (您应该能够弄清楚该怎么做。)
当列表为 non-empty 时,我们有一个不需要的前导逗号。这个比较棘手。问题是这个序列:
System.out.print(separator); System.out.print(word);
假设我们现在打印的那个之前有一个“字”。但当我们位于列表的开头时,情况并非如此。
处理多余逗号的一种方法是不在列表的开头输出分隔符。但是怎么办?
HINT 在列表的开头使用标志变量 true
并在打印第一个元素后将其更改为 false
。 (并使用标志来决定是否需要输出分隔符。)