gpt4 book ai didi

java - 用于 : each loop to return multiple Strings neSTLed in an ArrayList

转载 作者:行者123 更新时间:2023-11-30 03:15:46 26 4
gpt4 key购买 nike

我正在尝试使用以下内容返回运动队中的所有“球员及其目标”:

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

Netbeans 说没有 return 语句,我认为这是因为它位于 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();

在播放器对象中,toString 的作用如下:

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

最佳答案

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

让我们看看您的代码。 Netbeans 提示缺少 return 语句,因为您的 players 集合可能为空。在这种情况下,循环 block 永远不会被执行,并且方法在没有 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 用于构建您的字符串(但是一旦您有了工作方法,请考虑性能!)。

关于java - 用于 : each loop to return multiple Strings neSTLed in an ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32664801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com