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,但我得到的只是空值?
答案 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++)
将替换多年来的所有值。