[英]Using for : each loop to return multiple Strings nestled in an ArrayList
我正嘗試使用以下方法歸還運動隊的所有“球員及其目標”:
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();
在Player對象中,這是toString的作用:
public String toString(){
return ("Player: "+this.name+", goals "+this.goals);
}
Java只允許您返回一個對象。 無法返回多個對象。 如果要從單個方法返回多個對象,則必須首先將它們收集到單個對象中,例如數組, List
或String
,然后將其返回。
讓我們看看您的代碼。 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
來構建字符串(但請考慮一下有了工作方法就可以提高性能!)。
為什么netbeans抱怨,如果不輸入for循環該怎么辦? 因此,總應該有回報。
遇到實際問題,
只需構建一個String並返回
public String printPlayers(){
StringBuilder builder=new StringBuilder();
for (Player player : this.players){
builder.append(player).append(" ");
}
return builder.toString();
}
這將建立一個String,將所有玩家附加為String並最終返回。
public String printPlayers(){
String data="";
for (Player player : this.players){
data +=player.toString();
}
return data;
}
使用StringBuilder
public String printPlayers(){
StringBuilder sb = new StringBuilder();
for (Player player : this.players){
sb.append(player.toString());
}
return sb.toString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.