用于:每个循环返回多个位于ArrayList

时间:2015-09-19 05:57:59

标签: java for-loop arraylist

我正在尝试使用以下内容返回体育队的所有'球员和他们的目标':

public String printPlayers(){        
    for (Player player : this.players){
        return player.toString();
    }
}

Netbeans说没有返回语句,我认为这是因为它在for-each循环中。但如果我把它放在外面它只会返回一个项目。这是测试代码:

    Team barcelona = new Team("FC Barcelona");

    Player brian = new Player("Brian");
    Player pekka = new Player("Pekka", 39);

    barcelona.addPlayer(brian);
    barcelona.addPlayer(pekka);
    barcelona.addPlayer(new Player("Mikael", 1));

    barcelona.printPlayers();

在Player对象中,这是toString的作用:

public String toString(){
        return ("Player: "+this.name+", goals "+this.goals);
    }

4 个答案:

答案 0 :(得分:2)

Java允许您只返回单个对象。无法返回多个对象。如果要从单个方法返回多个对象,首先必须将它们收集到单个对象中,例如数组ListString,然后返回该对象。

让我们看看你的代码。 Netbeans抱怨缺少return语句,因为您的players集合可能是空的。在这种情况下,循环块从不执行,方法结束时没有return语句,这是不允许的。因此,让我们按如下方式修复您的方法:

public String printPlayers(){        
    for (Player player : this.players){
        return player.toString();
    }
    return "";
}

此外,该方法现在只返回一个对象:它会将集合中的第一个玩家转换为字符串,然后返回该对象。其他球员被忽略了。所以你必须在一个物体中收集你的球员。由于您想要返回一个字符串,因此在单个字符串中收集字符串是有意义的:

public String printPlayers(){        
    String result = "";
    for (Player player : this.players){
        result += " " + player.toString();
    }
    return result;
}

现在您可以尝试更好地完成结果,例如删除第一个元素的前导空格,或者添加逗号而不是空格等。另外,为了获得更高的性能,您可以使用StringBuilder构建你的字符串(但是一旦你有了一个工作方法就考虑性能!)。

答案 1 :(得分:0)

为什么netbeans抱怨,如果你没有进入for循环怎么办?所以应该总是有回报。

来实际问题,

只需构建一个String并返回

public String printPlayers(){   
        StringBuilder builder=new StringBuilder();     
        for (Player player : this.players){
            builder.append(player).append(" ");
        }
       return builder.toString();
    }

这是构建一个String,将所有玩家附加为String并最终返回。

答案 2 :(得分:0)

 public String printPlayers(){        
  String data="";
 for (Player player : this.players){
       data +=player.toString();
  }
      return data;
}

答案 3 :(得分:0)

使用StringBuilder

public String printPlayers(){ 
    StringBuilder sb = new StringBuilder();       
    for (Player player : this.players){
      sb.append(player.toString());
    }
    return sb.toString();
}