String disp;
for(int i=0; i<31 ; i++)
disp = disp + Integer.toString(i);
JOptionPane.showMessageDialog(null, disp);
错误提供:
Calendar.java:28:错误:变量disp可能尚未初始化 JOptionPane.showMessageDialog(null,disp);
答案 0 :(得分:3)
你应该避免在循环中连接结果String,因为每次迭代都必须创建带有新部分的旧String的副本。而是使用StringBuilder
及其append
方法。
StringBuilder disp = new StringBuilder();
for (int i = 0; i < 31; i++)
disp.append(i);
JOptionPane.showMessageDialog(null, disp);
无论如何,问题的原因是disp
没有分配任何字符串,因此没有任何内容可以将连接到。此外,在连接到字符串时,您不需要将其元素显式解析为String,负责该操作的代码将由编译器添加。尝试
String disp = "";//assign value to `disp`
for (int i = 0; i < 31; i++)
disp = disp + i;
答案 1 :(得分:0)
有两件事需要提及:
a)初始化你的字符串:
String disp = "";
如果您未初始化disp
,则为null
,因此可能会造成麻烦。编译器识别出disp
未初始化,因此无法编译程序。
b)您不需要Integer.toString(...)
:
for(int i = 0; i < 31 ; ++i) {
disp = disp + i;
}
所有基元都可以自动转换为String
。因此,在这种情况下,您可以通过Integer.toString(...)
跳过演员表。
最后说明:您可能希望使用StringBuilder来获得一些性能。有关详细信息,请查看Pshemo's或Eran's答案。