英文:
How to print list of string inside bracket?
问题
以下是翻译好的内容:
我是Java的新手。我在尝试打印一个由逗号分隔的字符串列表,放在括号里。
public class House extends Property {
protected static List<String> paints;
public String paint;
public House() {
super("House", 45);
String paints = new String();
System.out.print(paints);
}
public void addPaint(String paint) {
this.paint = paint;
ArrayList<String> House = new ArrayList<String>();
House.add(" ");
}
public void display() {
super.display();
List<String> words = Arrays.asList(paint);
StringJoiner strJoin = new StringJoiner(", ", " { ", " }");
words.forEach((s) -> strJoin.add(s));
if (paint == null || "".equals(paint)) {
System.out.print(" { }");
} else {
System.out.print(strJoin);
}
}
public static void main(String[] args) {
House house1 = new House();
house1.addPaint("Red");
house1.addPaint("Blue");
house1.addPaint("Yellow");
house1.display();
}
}
对于有颜色的房子,应该打印如下:
45 House { Red, Blue, Yellow }
对于没有颜色的房子(空的),应该打印如下:
45 House { }
然而,我的代码的输出只打印了最后添加的颜色:
45 House { Yellow }
请帮助我。谢谢。
英文:
I am new to Java. I am facing a problem to print a list of string separated by commas inside brackets.
public class House extends Property {
protected static List<String> paints;
public String paint;
public House() {
super("House", 45);
String paints = new String();
System.out.print(paints);
}
public void addPaint(String paint) {
this.paint = paint;
ArrayList<String> House = new ArrayList<String>();
House.add(" ");
public void display() {
super.display();
List<String> words = Arrays.asList(paint);
StringJoiner strJoin = new StringJoiner(", ", " { ", " }");
words.forEach((s)->strJoin.add(s));
if (paint == null || "".equals(paint)) {
System.out.print(" { }");
}
else {
System.out.print(strJoin);
}
public static void main(String[] args) {
House house1 = new House();
house1.addPaint("Red");
house1.addPaint("Blue");
house1.addPaint("Yellow");
house1.display();
}
It should be printed like this for a house with colors:
45 House { Red, Blue, Yellow }
Or like this for a house without color (empty):
45 House { }
However, the output of my code only prints the last added color:
45 House { Yellow }
Please help me. Thank you
答案1
得分: 1
使用前缀和后缀来对字符串列表进行分组,您可以使用Collectors.joining(CharSequence delimiter, CharSequence prefix,CharSequence suffix))
,示例:
import java.util.List;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
List<String> colors = List.of("Red", "Blue", "Yellow");
String result = colors.stream().collect(Collectors.joining(" , ", "{", "}"));
System.out.println(result);
}
}
这将输出{Red , Blue , Yellow}
,如果列表为空,将输出{}
。
请注意:
- 我认为您应该重新审查一下您的模型设计 ^^!
- 在我的示例中,我使用了
List.of()
来演示“如何”,需要Java 9或更高版本。
英文:
To group a list of strings using a prefix and suffix you can use Collectors.joining(CharSequence delimiter, CharSequence prefix,CharSequence suffix))
, example :
import java.util.List;
import java.util.stream.Collectors;
public class Test {
public static void main(String[] args) {
List<String> colors = List.of("Red", "Blue", "Yellow");
String result = colors.stream().collect(Collectors.joining(" , ", "{", "}"));
System.out.println(result);
}
}
this will print {Red , Blue , Yellow}
and if list is empty it will print {}
Note that:
- I think you should review your model design ^^ !
- I've used
List.of()
in my example to demonstrate the "how to", knowing that it requires java 9 or above
答案2
得分: 0
你已经在这里将paint
声明为一个字符串(而不是字符串列表)。
public String paint;
然后你将字符串变量转换为一个列表。
List<String> words = Arrays.asList(paint);
这就是为什么列表words
只有一个字符串,它是通过house1.addPaint()
添加的最后一个字符串,该方法只是在其中赋值字符串this.paint = paint;
。
有很多方法可以修复这个问题,但我会告诉你一种需要最少更改的方法。
我的建议:
public void addPaint(String paint) {
paints.add(paint);
}
和
List<String> words = Arrays.asList(paints);
英文:
You have declared paint
as a String (and not a List of Strings) here.
public String paint;
And then you convert the String variable to a List.
List<String> words = Arrays.asList(paint);
Which is why the list words
has only the single String which was added last with house1.addPaint()
, which just assigns the String this.paint = paint;
inside it.
There are many ways you can fix it. But I'll tell the one that requires the least amount of changes.
My suggestion:
public void addPaint(String paint) {
paints.add(paint);
}
and
List<String> words = Arrays.asList(paints);
</details>
# 答案3
**得分**: -3
```java
public class House {
List<String> colors = new ArrayList<String>();
public void addPaint(String color)
{
colors.add(color);
}
public void display()
{ String value = "";
for (String color : colors)
value += color + ", ";
value = value.substring(0, value.length()-2);
System.out.println("{ " + value + " }");
}
}
public static void main(String[] args) {
House house1 = new House();
house1.addPaint("Red");
house1.addPaint("Blue");
house1.addPaint("Yellow");
house1.display();
}
// Output: { Red, Blue, Yellow }
英文:
public class House {
List<String> colors = new ArrayList<String>();
public void addPaint(String color)
{
colors.add(color);
}
public void display()
{ String value = "";
for (String color : colors)
value += color + ", ";
value = value.substring(0, value.length()-2);
System.out.println("{ " + value + " }");
}
}
public static void main(String[] args) {
House house1 = new House();
house1.addPaint("Red");
house1.addPaint("Blue");
house1.addPaint("Yellow");
house1.display();
}
// Output: { Red, Blue, Yellow }
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论