Java逗号“&引用;弗雷奇
我在java项目中打印逗号时遇到了一个小问题。在Java逗号“&引用;弗雷奇,java,foreach,java-8,Java,Foreach,Java 8,我在java项目中打印逗号时遇到了一个小问题。在forEach部分,程序总是打印出“,”>,即使在最后一个单词之后。。。参见输出 .listener("lookAround", (Game g, String action, AbstractGameObject object, Object retVal) -> { System.out.print("You see: \n\t"); if (g.getItemsInRoom((Room) object).isEmpty
forEach
部分,程序总是打印出“,”>,即使在最后一个单词之后。。。参见输出
.listener("lookAround", (Game g, String action, AbstractGameObject object, Object retVal) -> {
System.out.print("You see: \n\t");
if (g.getItemsInRoom((Room) object).isEmpty() && g.getDoorsInRoom((Room) object).isEmpty())
System.out.print("nothing");
g.getItemsInRoom((Room) object)
.stream()
.forEach(item -> System.out.print(item.getName() + ", "));
g.getDoorsInRoom((Room) object)
.stream()
.forEach(door -> System.out.print(door.getName() + ", "));
System.out.println("\n");
})
输出:
You see:
Black Wooden door, Brown Wooden door,
我希望输出:
You see:
Black Wooden door, Brown Wooden door
有没有简单的方法来解决这个问题?
谢谢您的帮助:)我认为您不应该在
forEach
lambda内打印。实际上,我甚至不确定您是否应该在那里使用流
API
考虑改用或类。我认为您不应该在
forEach
lambda中打印。实际上,我甚至不确定您是否应该在那里使用流
API
请考虑改用或类。直接使用
StringJoiner
,而不是通过流
API,让我们在不使用其他代码的情况下处理空案例:
StringJoiner j=new StringJoiner(", ").setEmptyValue("nothing");
g.getItemsInRoom((Room)object).forEach(o -> j.add(o.getName()));
g.getDoorsInRoom((Room)object).forEach(o -> j.add(o.getName()));
System.out.println("You see: \n\t"+j);
直接使用
StringJoiner
,而不是通过Stream
API,让我们在不添加代码的情况下处理空案例:
StringJoiner j=new StringJoiner(", ").setEmptyValue("nothing");
g.getItemsInRoom((Room)object).forEach(o -> j.add(o.getName()));
g.getDoorsInRoom((Room)object).forEach(o -> j.add(o.getName()));
System.out.println("You see: \n\t"+j);
非常感谢,您的解决方案帮了大忙:)非常感谢,您的解决方案帮了大忙:)