类-构造方法

类-构造函数

主函数

public class ClassOne {
    public static void main(String[] args) {

        Date date1 = new Date("Dec",16,1770),
                date2 = new Date(1,27,1789),
                date3 = new Date(1882),
                date4 = new Date();

        System.out.println("Whose birthday is " + date1 + "?");
        System.out.println("Whose birthday is " + date2 + "?");
        System.out.println("Whose birthday is " + date3 + "?");
        System.out.println("Whose birthday is " + date4 + "?");
    }
}

类函数


public class Date {
    private String month;
    private int day;
    private int year;


    public Date(){    //无参构造函数
        month = "January";
        day = 1;
        year = 1000;

    }
    public Date(int monthInt,int day, int year){   //有参构造,month整型
        setDate(monthInt,day,year);
    }
    public Date(String monthString, int day,int year){   //有参构造,month字符串型
        setDate(monthString,day,year);
    }
    public Date(int year){                               ////有参构造,year作为输入参数
        setDate(1,1,year);
    }

    public  Date(Date aDate){
        if(aDate == null){  // Not a real date.
            System.out.println("Fatal Error");
            System.exit(0);
        }
        month = aDate.month;
        day = aDate.day;
        year = aDate.year;
    }

    public void setDate(int monthInt, int day, int year){
        if(dateOk(monthInt,day,year) == true){
            this.month = monthString(monthInt);
            this.day = day;
            this.year = year;

        }else {
            System.out.println("Fatal Error!");
            System.exit(0);
        }
    }
    public void setDate(String monthString, int day,int year){
        if (dateOk(monthString,day,year)) {
            this.month = monthString;
            this.day = day;
            this.year = year;
        } else{
            System.out.println("Fatal Error!");
            System.exit(0);
        }
    }

    public  void setDate(int year){
        setDate(1,1,year);
    }

    public void setYear(int year){
        if((year>9999) || (year<1000)){
            System.out.println("Fatal Error");
        }else {
            this.year = year;
        }
    }
    public void setMonth(int monthNumber){
        if((monthNumber<1) || (monthNumber>12)){
            System.out.println("Fatal Error");
        }else {
            this.month = monthString(monthNumber); //将数字月份转换为字符
        }
    }
    public void setDay(int day){
        if ((day < 1) || (day >31)){
            System.out.println("Fatal Error");
        }else {
            this.day = day;
        }
    }

    public int getMonth(){

        if (month.equalsIgnoreCase("January"))
            return 1;
        else if(month.equalsIgnoreCase("February"))
            return 2;
        else if(month.equalsIgnoreCase("March"))
            return 3;
        else if(month.equalsIgnoreCase("April"))
            return 4;
        else if(month.equalsIgnoreCase("May"))
            return 5;
        else if(month.equalsIgnoreCase("June"))
            return 6;
        else if(month.equalsIgnoreCase("July"))
            return 7;
        else if(month.equalsIgnoreCase("August"))
            return 8;
        else if(month.equalsIgnoreCase("September"))
            return 9;
        else if(month.equalsIgnoreCase("October"))
            return 10;
        else if(month.equalsIgnoreCase("November"))
            return 11;
        else if(month.equalsIgnoreCase("December"))
            return 12;
        else
        {
            System.out.println("Fatal Error");
            System.exit(0);
            return 0;
        }

    }

    public int getDay(){
        return  day;
    }
    public int getYear(){
        return year;
    }

    public String toString(){
        return (month+ " " +day +"," + year);
    }
    public boolean equals(Date ohterDate){
        return (month.equals(ohterDate.month) && (day == ohterDate.day) && (year == ohterDate.year));
    }
    public boolean precedes(Date otherDate){
        return ((year < otherDate.year) ||
                (year == otherDate.year && getMonth() < otherDate.getMonth()) ||
                (year == otherDate.year && month.equals(otherDate.month) && day < otherDate.day));

    }

    public void readInput(){
        boolean tryAgain = true;
        Scanner keyboard = new Scanner(System.in);
        while (tryAgain){
            System.out.println("Enter month ,day , and year:");
            System.out.println("Do not use a comma.");
            String  monthInput = keyboard.next();
            int dayInput = keyboard.nextInt();
            int yearInput = keyboard.nextInt();

            if(dateOk(monthInput,dayInput,yearInput)){
                setDate(monthInput,dayInput,yearInput);
                tryAgain = false;
            }else {
                System.out.println("Illegal date ! Reenter again!");
            }
        }
    }


    private boolean dateOk(int monthInt, int dayInt , int yearInt){
        return ((monthInt>=1) && (monthInt<=12)) &&((dayInt>=1) && (dayInt<=31)) &&
                ((yearInt>=1000) && (yearInt<=9999));

    }
    private boolean dateOk(String monthString, int dayInt , int yearInt) {
        return (monthOk(monthString)) && ((dayInt >= 1) && (dayInt <= 31)) &&
                ((yearInt >= 1000) && (yearInt <= 9999));
    }

    private boolean monthOk(String month){
        return (month.equals("January") || month.equals("February") ||
                month.equals("March") ||month.equals("April") || month.equals("May")
        || month.equals("June") || month.equals("July") || month.equals("August") ||
                month.equals("September") || month.equals("October") || month.equals("November") ||
            month.equals("December"));
        }

    private String monthString(int monthNumber){
        switch (monthNumber){
            case 1:
                return "January";
            case 2:
                return  "February";
            case 3:
                return  "March";
            case 4:
                return "Apirl";
            case 5:
                return "May";
            case 6:
                return "June";
            case 7:
                return "July";
            case 8:
                return "August";
            case 9:
                return "September";
            case 10:
                return "October";
            case 11:
                return "November";
            case 12:
                return "December";
            default:
                System.out.println("Fatal Error!");
                System.exit(0);
        }
        return "Error";
    }

}
posted @ 2022-04-10 17:44  时装男人  阅读(40)  评论(0)    收藏  举报