2 u014101606 u014101606 于 2014.07.03 15:05 提问

下面代码,若输入不合法,怎么修改,抛出异常并重新输入

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

}

1个回答

u011598529
u011598529   2014.07.04 11:50

这也太简单了吧,输入非法,跑出异常,继续执行方法不就行了吗

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!