问题描述
- 下面代码,若输入不合法,怎么修改,抛出异常并重新输入
-
import java.util.Scanner;public class DisplayCalendar {
public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter a year:"); int year = input.nextInt(); System.out.print("Enter month in number between 1 and 12:"); int month = input.nextInt(); // Print Calendar for the month of the year printMonth(year, month); } static void printMonth(int year, int month) { printMonthTitle(year, month); printMonthBody(year, month); } static int getStartDay() { int year=0; int month=1; final int START_DAY_FOR_JAN_1_1800 = 3; int totalNumberOfDays = getTotalNumberOfDays(year, month); return (totalNumberOfDays + START_DAY_FOR_JAN_1_1800) % 7; } static int getTotalNumberOfDays(int year, int month) { int total = 0; for (int i = 1800; i < year; i++) if (isLeapYear(i)) total = total + 366; else total = total + 365; for (int i = 1; i < month; i++) total = total + getNumOfDaysInMonth(year, i); return total; } static void printMonthBody(int startDay, int numOfDaysInMonth) { startDay = getStartDay(); numOfDaysInMonth = getNumOfDaysInMonth(startDay, numOfDaysInMonth); int i = 0; for (i = 0; i < startDay; i++) System.out.print(" "); for (i = 1; i <= numOfDaysInMonth; i++) { if (i < 10) System.out.print(" " + i); else System.out.print(" " + i); if ((i + startDay) % 7 == 0) System.out.println(); } System.out.println(); System.out.println(); // Get the start day for the next month startDay = (startDay + numOfDaysInMonth) % 7; } static void printMonthTitle(int year, int month) { System.out.println(" " + getMonthName(month) + " " + year); System.out.println("_______________________________"); System.out.println(" Sun Mon Tue Wed Thu Fri Sat"); } static String getMonthName(int month) { String monthName = " "; switch (month) { case 1: monthName = "January"; break; case 2: monthName = "February"; break; case 3: monthName = "March"; break; case 4: monthName = "April"; break; case 5: monthName = "May"; break; case 6: monthName = "June"; break; case 7: monthName = "July"; break; case 8: monthName = "August"; break; case 9: monthName = "September"; break; case 10: monthName = "October"; break; case 11: monthName = "November"; break; case 12: monthName = "December"; break; } return monthName; } static int getNumOfDaysInMonth(int year, int month) { if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) return 31; if (month == 4 || month == 6 || month == 9 || month == 11) return 30; // if month is incorrect return 0; } static boolean isLeapYear(int year) { return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0); }
}
解决方案
这也太简单了吧,输入非法,跑出异常,继续执行方法不就行了吗
时间: 2025-01-09 11:47:16