2015-10-24 46 views
0

我在打印java項目中的逗號時遇到了一些問題。在forEach部分程序總是打印出 「」>連最後一個字後...看到輸出Java逗號「,」in 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 

有沒有簡單的方法來解決這個問題? 謝謝你的幫助:)

回答

3

我不認爲你應該打印forEach lambda。其實我甚至不確定你應該在那裏使用stream API。

請考慮使用String.join()StringJoiner類。

1

使用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); 
+0

非常感謝你,你的解決方案在幫助了很多:) –