HDOJ(HDU) 2133 What day is it(认识下Java的Calendar类---日期类)

简介: HDOJ(HDU) 2133 What day is it(认识下Java的Calendar类---日期类)

Problem Description

Today is Saturday, 17th Nov,2007. Now, if i tell you a date, can you tell me what day it is ?


Input

There are multiply cases.

One line is one case.

There are three integers, year(0< year<10000), month(0<=month<13), day(0<=day<32).


Output

Output one line.

if the date is illegal, you should output “illegal”. Or, you should output what day it is.


Sample Input

2007 11 17


Sample Output

Saturday


这个题目的某个日期是星期几,和真正的日历是不一样的!!!

所以,用Java的日期类Calendar是过不了的。

只能自己写囖。。。题目意思是:1 1 1是星期一!

而事实上,1 1 1是星期六。不要问我为什么,我也不知道。。。

package cn.hncu.acm;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;
public class P2133 {
    public static void main(String[] args) throws ParseException {
        String[] week = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
        int yuee[][]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int y = sc.nextInt();
            int m = sc.nextInt();
            int d = sc.nextInt();
             if((yunn(y)==0&&m==2&&d==29)||m>12||d>yuee[yunn(y)][m]||m==0||d==0||y==0)
               {
                   System.out.println("illegal");
                   continue;
               }
             /*
            //题目是有问题的
            //1 1 1 应该是星期六,具体为什么看网上资料。
            //这个题目要求已知1 1 1是星期一
            String[] week = {"","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
            String strTime = y+"-"+m+"-"+d;
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            Calendar c = Calendar.getInstance();
            c.setTime(format.parse(strTime));
            System.out.println(week[c.get(Calendar.DAY_OF_WEEK)]);
            */
             int s=0;
             for(int i=1;i<y;i++){
                 if(yunn(i)==1){
                     s+=366;
                 }else{
                     s+=365;
                 }
             }
             for(int i=1;i<m;i++){
                 s+=yuee[yunn(y)][i];
             }
             s+=d;
             s=s%7;
             System.out.println(week[s]);
        }
    }
    public static int yunn(int xx)
    {
        if((xx%4==0&&xx%100!=0)||(xx%400==0))
            return 1;//是闰年
        return 0;//不是闰年
    }
}
目录
相关文章
|
7天前
|
Java 开发者
Java面试题:请解释内存泄漏的原因,并说明如何使用Thread类和ExecutorService实现多线程编程,请解释CountDownLatch和CyclicBarrier在并发编程中的用途和区别
Java面试题:请解释内存泄漏的原因,并说明如何使用Thread类和ExecutorService实现多线程编程,请解释CountDownLatch和CyclicBarrier在并发编程中的用途和区别
14 0
|
7天前
|
安全 Java 开发者
Java面试题:什么是Java 15中的密封类以及其限制?还有哪些其他特性用于限制类继承的机制吗?
Java面试题:什么是Java 15中的密封类以及其限制?还有哪些其他特性用于限制类继承的机制吗?
13 1
|
7天前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
18 1
|
8天前
|
Java 调度
Calendar类在Java中的应用
Calendar类在Java中的应用
|
12天前
|
开发框架 Java Android开发
Java中的类反射与动态代理详解
Java中的类反射与动态代理详解
|
14天前
|
Java 数据安全/隐私保护
|
14天前
|
Java 数据安全/隐私保护
Java中的类继承与多态详解
Java中的类继承与多态详解
|
14天前
|
设计模式 Java
Java中的动态加载与卸载类
Java中的动态加载与卸载类
|
6天前
|
存储 运维 前端开发
Java面试题:什么是Java的异常处理机制?列举常见的异常类,并说明使用场景
Java面试题:什么是Java的异常处理机制?列举常见的异常类,并说明使用场景
17 0
|
7天前
|
安全 Java 数据处理
Java面试题:什么是Java中的Optional类及其使用场景?
Java面试题:什么是Java中的Optional类及其使用场景?
10 0