2012-03-12 82 views
0
years = new String[67]; 
for(int y = cal.get(Calendar.YEAR) - 13; y <= cal.get(Calendar.YEAR) - 80; y++) { 
    for(int i = 0; i < years.length; i++){ 
     years[i] = Integer.toString(y); 
    } 
} 
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(years)); 

我有這段代碼用於填充帶有67個日期的ComboBox,但是我所得到的是空值?填充ComboBox的字符串數組的Java代碼

回答

4

外循環體永遠不會執行,因爲循環條件是在第一次迭代假:

您嘗試從x - 13上去x - 80

for(int y = cal.get(Calendar.YEAR) - 13; y <= cal.get(Calendar.YEAR) - 80; y++) 
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
       this is higher than... ...this even in the first iteration 

此外,爲確保-13-80實際上增加至years數組的長度,我建議你寫這樣的:

String[] years = new String[67]; 
int thisYear = cal.get(Calendar.YEAR); 
int startYear = thisYear - 13; 

for (int i = 0; i < years.length; i++) 
    years[i] = Integer.toString(startYear - i); 

jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(years)); 
+0

恩..我看到謝謝。 – Dan 2012-03-12 21:20:36

+0

不客氣。 – aioobe 2012-03-12 21:21:48

0
years = new String[67]; 
int index = 0; 

    for(int y = cal.get(Calendar.YEAR) - 13; y >= cal.get(Calendar.YEAR) - 80; y--) { 

      years[index++] = Integer.toString(y); 
    } 

jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(years)); 
0
for(int y = cal.get(Calendar.YEAR) - 13; y >= cal.get(Calendar.YEAR) - 80; **y--**) { 
+0

您還需要使用'> ='進行比較:-) – aioobe 2012-03-12 21:16:54

+0

已修復...謝謝 – redDevil 2012-03-12 21:20:02

0

你for循環結束條件在第一次迭代中爲真。使用這個來代替:

years = new String[67]; 

     for(int i = 0; i < years.length; i++){ 

      years[i] = Integer.toString(cal.get(Calendar.YEAR) - 13-i); 
     } 

jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(years)); 
1

假設日曆與當前時間初始化,你去自1999年每年1932這使得空循環。

這兩個嵌套循環有什麼意義?

+0

偉大的思想認爲一樣+1 – mKorbel 2012-03-12 23:05:06

0

幾個問題跳出來我: 一,你的循環執行0次,因爲cal.get(Calendar.YEAR) - 13 < = cal.get(Calendar.YEAR) - 80所以循環將立即退出。

兩個,因爲你是從一個較大的值(cal.get(Calendar.YEAR) - 13)到一個較小的一個(cal.get(Calendar.YEAR) - 80),你不應該這樣做,因爲y++它會增加y,則應該使用y--去。

最後,for(int i = 0; i < years.length; i++)將替換年份中的所有值。