2012-03-12 32 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++)将替换年份中的所有值。