2015-06-21 35 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回答。

相關問題