我是一个新手,知道我可能会以一种完全错误的方式来解决这个问题。当用户选择给定的月份和年份时,我试图用一个月中所有星期一的日期填充转盘。为此,我使用了两个循环,第一个循环计算一个月中有多少个循环(4或5),第二个循环填充由第一个循环设置的长度x的数组!乍一看,但是当我将月份提前4个月到10月时,出现以下错误
java.lang.ArrayIndexOutOfBoundsException。
一些帮助将不胜感激,因为我认为有更好的方法。我的代码如下.......
int year1 = year.getCurrentItem();
int month1 = month.getCurrentItem();
int count = 0;
Calendar cal = new GregorianCalendar(year1, month1, 1);
do {
int day1 = cal.get(Calendar.DAY_OF_WEEK);
if (day1 == Calendar.MONDAY) {
count++;
}
cal.add(Calendar.DAY_OF_YEAR, 1);
} while (cal.get(Calendar.MONTH) == month1);
int count2 = 0;
recordArray = new String[count];
Calendar cal2 = new GregorianCalendar(year1, month1, 1);
do {
int day1 = cal2.get(Calendar.DAY_OF_WEEK);
if (day1 == Calendar.SUNDAY) {
recordArray[count2] = Integer.toString(cal2.get((Calendar.DAY_OF_MONTH))-1);
count2++;
}
cal2.add(Calendar.DAY_OF_YEAR, 1);
} while (cal2.get(Calendar.MONTH) == month1);
最佳答案
在第二个do{}while()
中,将if (day1 == Calendar.SUNDAY)
更改为if (day1 == Calendar.MONDAY)
但是我认为最好使用ArrayList
之类的东西,并且使用一个do-while周期(除了两个)。
...
ArrayList<String> recordArray = new ArrayList<String>();
do {
int day1 = cal.get(Calendar.DAY_OF_WEEK);
if (day1 == Calendar.MONDAY) {
recordArray.add(Integer.toString(cal2.get((Calendar.DAY_OF_MONTH))-1));
}
cal.add(Calendar.DAY_OF_YEAR, 1);
} while (cal.get(Calendar.MONTH) == month1);
...