Java开关看不到表达式的值

Java开关看不到表达式的值,java,switch-statement,Java,Switch Statement,我创建了一个方法,根据月份计算一年中的天数 public int howManyDays() { int totalDays = 0; System.out.println(dDay); switch(dDay) { case 1: totalDays = 0; case 2: totalDays = 31; case 3: totalDays = totalDays + 28;

我创建了一个方法,根据月份计算一年中的天数

public int howManyDays()
{
    int totalDays = 0;

    System.out.println(dDay);

    switch(dDay)
    {
    case 1:
        totalDays = 0;
    case 2:
        totalDays = 31;
    case 3:
        totalDays = totalDays + 28;
    case 4:
        totalDays = totalDays + 31;
    case 5:
        totalDays = totalDays + 30;
    case 6: 
        totalDays = totalDays + 31;
    case 7:
        totalDays = totalDays + 30;
    case 8:
        totalDays = totalDays + 31;
    case 9:
        totalDays = totalDays + 31;
    case 10:
        totalDays = totalDays + 30;
    case 11:
        totalDays = totalDays + 31;
    case 12:
        totalDays = totalDays + 30;
    }

    totalDays = totalDays + dDay;

    return totalDays;

}
出于某种原因,当我用驱动程序调用它时,它只返回dDay的数字,而没有输入开关。我知道dDay具有我给定的任何值,因为方法开头的print语句确认了它。另外,如果我在切换之前给dDay一个方法中的任意值,它将进入切换并按预期工作。我不明白为什么println可以看到dDay的值,但是开关不能

下面是我用来给数据成员赋值的方法

public void setDate(int month, int day, int year)
    {
        int monthLength = 0;
        int leapYear = 0;

        dYear = year;

        if (month > 0 && month < 13)
            dMonth = month;

        if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
            monthLength = 31;
        else if (month == 4 || month == 6 || month == 9 || month == 11)
            monthLength = 30;
        else if (month == 2)
            monthLength = 28;

        if(year % 400 == 0 || year % 100 != 0 && year % 4 == 0)
            leapYear = 1;

        if (monthLength == 31 && day < 32 && day > 0)
            dDay = day;
        else if (monthLength == 30 && day < 31 && day > 0)
            dDay = day;
        else if (monthLength == 28 && day < (29 + leapYear) && day > 0)
            dDay = day;                 
    }
及建造商

public class Date
{
    private int dMonth;
    private int dDay;
    private int dYear;

    public Date()
    {
        dMonth = 1;
        dDay = 1;
        dYear = 1900;
    }

    public Date (int month, int day, int year)
    {
        dMonth = month;
        dDay = day;
        dYear = year;
    }

你能让全班同学看看吗?我不相信你。证明我不是,我相信你。我对dDay的声明感兴趣。是int吗?或者是其他的东西,比如char?错误的声明可能会给出你所描述的行为。为什么对12个病例进行切换,是今天,对吗?不是月份。就是这样,我应该用月份,而不是白天,我觉得很愚蠢,谢谢,伙计。
public class Date
{
    private int dMonth;
    private int dDay;
    private int dYear;

    public Date()
    {
        dMonth = 1;
        dDay = 1;
        dYear = 1900;
    }

    public Date (int month, int day, int year)
    {
        dMonth = month;
        dDay = day;
        dYear = year;
    }