Moo*_*ial -1 java variables initialization
对于我的Comp Sci课程,我必须创建一个程序来查找给定月份(1-12)中的天数,你知道为什么我在尝试时遇到错误"变量天数可能没有被初始化"从交换机返回int"days"?这是代码:
public static int getNumberofDays(int month,int year)
{
// Imports the required Scanner
Scanner kbd = new Scanner(System.in);
final String month;
final int days;
switch (month) {
case 1: days = 31;
break;
case 2: if ((year % 4 == 0) && year % 100 != 0)
{
days = 29;
}
else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))
{
days = 29;
}
else
{
days = 28;
}
break;
case 3: days = 31;
break;
case 4: days = 30;
break;
case 5: days = 30;
break;
case 6: days = 31;
break;
case 7: days = 31;
break;
case 8: days = 31;
break;
case 9: days = 30;
break;
case 10: days = 31;
break;
case 11: days = 30;
break;
case 12: days = 31;
break;
default: month = "invalid";
break;
}
return days;
}
Run Code Online (Sandbox Code Playgroud)
为什么我收到错误"变量天可能没有被初始化"
因为:
final int days;
Run Code Online (Sandbox Code Playgroud)
应该:
int days = 0;
Run Code Online (Sandbox Code Playgroud)
为什么?
month在switch String month,遮蔽参数int month Scanner未使用此外,如果您不打破案例块,则会执行下一个案例块,这意味着您可以执行以下操作:
public static int getNumberofDays(int month,int year) {
switch (month) {
case 1:
case 3:
case 6:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 5:
case 9:
case 11:
days = 30;
break;
case 2:
if ((year % 4 == 0) && year % 100 != 0)
{
days = 29;
}
else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))
{
days = 29;
}
else
{
days = 28;
}
break;
default: days = -1;
break;
}
return days;
}
Run Code Online (Sandbox Code Playgroud)
Calendar!:public static int getNumberofDays(int month,int year)
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, month);
cal.set(Calendar.YEAR, year);
return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
Run Code Online (Sandbox Code Playgroud)
Java-8public static int getNumberofDays(int month,int year)
{
YearMonth yearMonthObject = YearMonth.of(year, month);
return yearMonthObject.lengthOfMonth();
}
Run Code Online (Sandbox Code Playgroud)