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;
}