2015-06-21 55 views
0
String disp; 
for(int i=0; i<31 ; i++) 
disp = disp + Integer.toString(i); 

JOptionPane.showMessageDialog(null, disp); 

错误给出:的Java:如何在一个循环将字符串

Calendar.java:28: error: variable disp might not have been initialized JOptionPane.showMessageDialog(null, disp);

+0

将'String disp;'更改为'String disp =“”;'或一些默认值 –

回答

3

应避免在循环中将结果字符串,因为它每次迭代中具有创建旧字符串与新部件的副本。请使用StringBuilder及其append方法。

StringBuilder disp = new StringBuilder(); 

for (int i = 0; i < 31; i++) 
    disp.append(i); 

JOptionPane.showMessageDialog(null, disp); 

反正原因您的问题是,disp没有分配给它的任何字符串,所以没有什么来连接到。另外,当连接到字符串时,您不需要将其元素明确地解析为字符串,编译器会添加负责该代码的代码。尝试

String disp = "";//assign value to `disp` 
for (int i = 0; i < 31; i++) 
    disp = disp + i; 
0

有两件事提:

  • 一)初始化字符串:

    String disp = ""; 
    

    如果你不初始化disp,它是null,因此可能会造成麻烦。编译器认识到,disp未初始化,因此不编译该程序。

  • B)你不需要Integer.toString(...)

    for(int i = 0; i < 31 ; ++i) { 
        disp = disp + i; 
    } 
    

    所有原始数据可自动浇铸为String。因此,在这种情况下,您可以通过Integer.toString(...)跳过剧组。

最后说明:您可能想使用StringBuilder来获得一些性能。详情请看Pshemo'sEran's回答。

相关问题