Android中统计当前月份周日数量的实现问题及修正方案
计算当前月份指定星期的出现次数(以周日为例)
我看到你尝试用Calendar类统计当前月份的周日数量,但代码没得到正确结果——问题出在循环里的一个小错误:你每次循环都把日期重置成了当月的1号,所以每次判断的都是1号的星期几,自然没法统计整个月的周日数量。
修正后的代码方案
只需要把循环里设置日期的代码改成当前循环的day值,而不是固定的1,同时把逻辑封装成可复用的方法,方便以后统计其他星期几:
import java.util.Calendar; public class MonthDayCounter { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); int currentMonth = cal.get(Calendar.MONTH); int currentYear = cal.get(Calendar.YEAR); // 调用方法统计当月周日数量 int sundayCount = countDayOccurrence(currentYear, currentMonth, Calendar.SUNDAY); System.out.println("当前月份的周日数量:" + sundayCount); } public static int countDayOccurrence(int year, int month, int dayToFind) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month, 1); int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int count = 0; for (int day = 1; day <= daysInMonth; day++) { // *关键修正*:这里设置为当前循环的day,而不是固定的1 calendar.set(year, month, day); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); if (dayOfWeek == dayToFind) { count++; } } return count; } }
核心问题说明
原代码的错误行:
cal.set(ano_cal, mes_cal, 1);
这行代码会让循环的每一次都回到当月1号,导致你永远只在判断1号是不是周日,自然统计不出全月的周日数量。修正后每次循环都会定位到当月的具体某一天,才能正确统计目标星期的出现次数。
这个方法还很灵活——如果要统计当月的周六数量,只需要把第三个参数改成Calendar.SATURDAY就行。
内容的提问来源于stack exchange,提问作者Jose Borges
相关产品推荐
相关产品推荐

