wmf21 2014-07-03 07:05 采纳率: 0%
浏览 3782

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

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条回答

  • 一棵棵大树 2014-07-04 03:50
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable