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

问题描述

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

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

java-下面代码,若输入不合法,怎么修改,抛出异常并重新输入的相关文章

java 代码-Java对话框输入,修改下面代码,若输入不合法,抛出异常并重新输入

问题描述 Java对话框输入,修改下面代码,若输入不合法,抛出异常并重新输入 import javax.swing.*; public class Calendar { public static void main(String[] args) { // Prompt the user to enter input String yearInput = JOptionPane.showInputDialog("Enter a year:"); int year = Integer.p

java数组-这是我的代码,如何才能让数组实现连续的输入和输出

问题描述 这是我的代码,如何才能让数组实现连续的输入和输出 public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.println(""请输入数字个数""); int n = sc.nextInt(); System.out.println(""请输入数字&

java源码-求这段c语言的代码换成java的代码

问题描述 求这段c语言的代码换成java的代码 #include #define P 3.1415927#define toFeet(x) x/12.0#define toMiles(x) x/5280.0int main(){ double diameter;//直径 int revolutions;//转数 double time;//香蕉 double s; int count=1; while(scanf("%lf%d%lf",&diameter,&revolu

java普通代码执行顺序问题?

问题描述 java普通代码执行顺序问题? 其实我也是这样想的 不过那两天做js ,在js中调用了其他A方法,然后又调用了B方法由于A方法没执行完就跳到了B,我就想java如果按照顺序执行到a这步,要在循环中调用其他类中的方法 很长时间之后才能处理完,此时a下面的b方法是否会先执行. ---------------- 我在A类中调用了B类中的方法export,传入了5个list. 然后分别写了对5个list的操作,在所有操作的最后都分别有一个嵌套循环 for(int i=0;i<x;i++){ f

java 数据结构- 分离链接散列表,线性探测,平方探测 java 程序代码

问题描述 分离链接散列表,线性探测,平方探测 java 程序代码 给定输入{4371,1323,6173,4199,4344,9679,1989}和散列函数h(x)=x mod 10 分离链接散列表,线性探测,平方探测 java 程序的代码

前台是个图标,&amp;amp;lt;img&amp;amp;gt;图标。 怎么调用JSP作成的日历页面(一个小页面,用java + html代码,不是js)

问题描述 前台是个图标,<img>图标.怎么调用JSP作成的日历页面(一个小页面,用java+html代码,不是js)怎么调用这个jsp日历呢??另外在这个JSP里面输入的值,是怎么传回呢?? 解决方案 解决方案二:我也等回答.....解决方案三:该回复于2010-12-03 10:18:23被版主删除解决方案四:吧图片做成个链接<ahref="***.jsp"><imgsrc=""></a>解决方案五:可以将你的be

java项目代码同步问题,求大神指点

问题描述 java项目代码同步问题,求大神指点 一个java项目写了一些代码,然后两个人各自拷贝了项目,各自写了一些代码.现在要合并在一起,怎么合??请指教. 解决方案 使用svn,一个人把项目上传上去,另一个人更新下来,然后把自己的代码覆盖svn跟新下来的代码,提交,在提交的界面上比较提交文件,看看之前一个的代码那些别覆盖了,把他复制下来自己添加上去 解决方案二: 用 svn!!!!! 解决方案三: 用svn版本管理软件.分为服务器端和tortoise(用户端),svn服务器端记载了每个文件的

新人小白求助 很简单的一个修改密码的代码,但密码一直修改不成功,求大神帮帮忙

问题描述 这是我的修改密码的代码,要求输入用户名,密码,原密码和确认密码四个内容usingSystem;usingSystem.Linq;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebC

小白求助,java简化代码问题

问题描述 小白求助,java简化代码问题 public void UseProcessSum() throws IOException { sc = Output.getWorkbook(); XSSFSheet readsheet = readWorkbook(); for (; i <= lastnum; i++) { System.out.println("getsum"); XSSFRow readrow = readsheet.getRow(i);// 获取输入行 Pr