用于填充ComboBox的String数组的Java代码

时间:2012-03-12 21:09:16

标签: java arrays swing jcombobox

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,但我得到的只是空值?

6 个答案:

答案 0 :(得分:4)

外循环的主体永远不会执行,因为第一次迭代时循环条件为false:

您尝试从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));

答案 1 :(得分:1)

假设日历是用当前时间初始化的,那么从1999年到1932年。这就是一个空循环。

拥有这两个嵌套循环有什么意义?

答案 2 :(得分: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));

答案 3 :(得分:0)

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

答案 4 :(得分: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));

答案 5 :(得分:0)

有几个问题突然出现在我面前: 一,你的循环从cal.get(Calendar.YEAR) - 13&lt; = cal.get(Calendar.YEAR) - 80开始执行正好0次,所以循环将立即退出。

两个,因为你从较大的值(cal.get(Calendar.YEAR) - 13)变为较小的值(cal.get(Calendar.YEAR) - 80),你不应该y++,因为它会增加y,你应该改为使用y--

最后,for(int i = 0; i < years.length; i++)将替换多年来的所有值。