String playerlist;
for(Player p : allplayers){
playerlist += p.getDisplayName() + ", ";
}
sendMessage(playerlist);
我怎样才能做到这一点?我需要在我的 for 循环中有一个变量,然后在循环外访问它。
谢谢,抱歉,如果这是一个非常笨的问题。我就是想不通。
最佳答案
你很接近。您需要将第一行更改为
String playerlist = "";
在 Java 中,在初始化之前使用变量是非法的,并且该行
playerlist += p.getDisplayName() + ", ";
脱糖(*) 到
String temp = playerlist;
playerlist = temp + (p.getDisplayName() + ", ");
初始化playerlist
后,您可以将其内容读入临时变量,然后更新playerlist
。
不过,还有两个更高级别的建议。
- 如果您有可用的连接方法,正如某些库提供的那样(.NET 和 Python 平台也是如此),您可以只使用更易于阅读的连接。
- 但是,如果您没有可用的连接方法(据我所知,Java 标准库不提供此类方法),您应该使用 StringBuilder ,与@anubhava 的建议一致。您将在处理大量字符串时获得更好的性能,并且代码更易于理解,这是双赢的。
编辑:正如@edalorzo 在评论中正确提到的那样,您只会收到未初始化本地 变量的错误,并且静态和实例字段都会自动初始化。具体来说,数值类型(int
、long
、double
等)被初始化为0, boolean 值被初始化为false
,引用类型被初始化为null
。
规范明确描述了字段的自动初始化,因此您可以依赖它,但它很少是您想要的。通常,您以后使用它时会需要该字段的非默认值,因为 null
不是很有用(而且许多语言,特别是标准 ML 等函数式语言,没有 完全为 null
)。所以我建议在构造函数中初始化对象的所有字段。
(*):我在上面展示的“脱糖”几乎是准确的:事实上,playerlist
只被评估一次,这不会影响这个特定程序的行为。
关于Java - 访问for循环内外的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10407505/