Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java逗号“&引用;弗雷奇_Java_Foreach_Java 8 - Fatal编程技术网

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

我在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() && 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);

非常感谢,您的解决方案帮了大忙:)非常感谢,您的解决方案帮了大忙:)