所以到目前为止我的代码可以正常工作,但我有两个问题。此代码允许您输入月、日和年,并告诉您它有多少天。本质上它是一个闰年检查器,但包括每个月(无论出于何种原因)。
现在我知道使案例工作的唯一方法是使用数字,但我希望用户能够输入月份的实际名称作为输入,并且代码仍然知道将其带到哪个案例。当我尝试命名案例月份名称时,它说它无法识别该变量。所以这是我的第一个问题。
我的第二个问题是,如果用户尝试在“年份”部分输入不是整数的字符,我希望它给出错误消息。有人告诉我使用 .hasNextInt() 但我完全不确定它的功能或如何实现它。我在这里查看了其他人的代码,试图弄清楚它是如何使用的,但无济于事。这是我的代码,任何建议或指导将不胜感激。先感谢您!
public class MonthLength {
public static void main(String[] args) {
// Prompt the user to enter a month
SimpleIO.prompt("Enter a month name: ");
String userInput = SimpleIO.readLine();
int month = Integer.parseInt(userInput);
// Terminate program if month is not a proper month name
if (month < 1 || month > 12) {
System.out.println("Illegal month name; try again");
return;
}
// Prompt the user to enter a year
SimpleIO.prompt("Enter a year: ");
userInput = SimpleIO.readLine();
int year = Integer.parseInt(userInput);
//Terminate program if year is not an integer
if (year < 0) {
System.out.println("Year cannot be negative; try again");
return;
}
// Determine the number of days in the month
int numberOfDays;
switch (month) {
case 2: // February
numberOfDays = 28;
if (year % 4 == 0) {
numberOfDays = 29;
if (year % 100 == 0 && year % 400 != 0)
numberOfDays = 28;
}
break;
case 4: // April
case 6: // June
case 9: // September
case 11: // November
numberOfDays = 30;
break;
default: numberOfDays = 31;
break;
}
// Display the number of days in the month
System.out.println("There are " + numberOfDays +
" days in this month");
}
}