A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

// 一道黑马的测试题,大神看来可能很简单的样子,不过确实把我纠结得要砸电脑了;希望有大神帮忙解决一下,
谢谢啦!!!!!!
问题是:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。

下面是我写的一段代码:

public class Test9 {
public static void main(String[] args) {
        //键盘录入
        Scanner sc =new Scanner(System.in).useDelimiter("\\D");
        System.out.println("请输入日期:");
       
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM--dd ");
         //throw new RunTimeException("输入格式不正确,请重新输入:");
        //定义年月日
        int year= sc.nextInt();
        int month = sc.nextInt();
        int date =   sc.nextInt();
        sc.close();
        System.out.println("今天是"+year+"年的第"+analysis(year,month,date)+"天");
}
//判断天数
//判断天数
private static int analysis(int year, int month, int date){
        int n = 0;
       
        int[] month_date = new int[] {0,31,28,31,30,31,30,31,31,30,31,30};
        if((year%400)==0 || ((year%4)==0)&&((year%100)!=0))
          month_date[2] = 29;
        for(int i=0;i<month;i++)
          n += month_date[i];
        return n+date;
}
}
// 上面的代码,可以实现获取某日是某年的第几天;但是关于获取星期几,并且直接用在代码中,试了好多方法都不行,求助求助!!!!

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

4 个回复

倒序浏览
Calendar.DAY_OF_WEEK查api啊  这个函数好像可以
回复 使用道具 举报
  1. package com.itheima;

  2. import java.util.Calendar;
  3. import java.util.Scanner;

  4. public class DateDemo {
  5.         public static void main(String[] args){
  6.                  //键盘录入
  7.         Scanner sc =new Scanner(System.in);
  8.         System.out.println("请输入日期,例如:1990-01-01");
  9.         
  10.          //throw new RunTimeException("输入格式不正确,请重新输入:");
  11.         //定义年月日
  12.         while(true){
  13.                 String str = sc.next();
  14.                 String regex = "^[1-9]\\d{3}\\-([1-9]|[0][1-9]|[1][0-2])\\-([1-9]|[0][1-9]|[1-2]\\d|[3][0-1])$";
  15.                 if(str.matches(regex)){
  16.                         String[] strs = str.split("-");
  17.                         int year= Integer.parseInt(strs[0]);
  18.                         int month = Integer.parseInt(strs[1]);//MONTH指示月份的 get 和 set 的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是 JANUARY,它为 0;最后一个月取决于一年中的月份数。
  19.                         int date =  Integer.parseInt(strs[2]);
  20.                         sc.close();
  21.                         
  22.                         Calendar c = Calendar.getInstance();
  23.                         c.set(year, month-1, date);
  24.                                 int week = c.get(Calendar.DAY_OF_WEEK);
  25.                                 String weekday = null;
  26.                                 switch(week-1){
  27.                                         case 0:weekday="星期日";
  28.                                         break;
  29.                                         case 1:weekday="星期一";
  30.                                         break;
  31.                                         case 2:weekday="星期二";
  32.                                         break;
  33.                                         case 3:weekday="星期三";
  34.                                         break;
  35.                                         case 4:weekday="星期四";
  36.                                         break;
  37.                                         case 5:weekday="星期五";
  38.                                         break;
  39.                                         case 6:weekday="星期六";
  40.                                         break;
  41.                                 }
  42.                                
  43.                                 System.out.println(weekday);
  44.                                 return;
  45.                 }
  46.                 else{
  47.                         System.out.println("输入格式不正确!");
  48.                 }
  49.         }
  50.         }
  51. }
复制代码
回复 使用道具 举报
一年中的第几天
  1. package com.itheima;

  2. import java.util.Calendar;
  3. import java.util.Scanner;

  4. public class DateDemo {
  5.         public static void main(String[] args){
  6.                  //键盘录入
  7.         Scanner sc =new Scanner(System.in);
  8.         System.out.println("请输入日期,例如:1990-01-01");
  9.         
  10.          //throw new RunTimeException("输入格式不正确,请重新输入:");
  11.         //定义年月日
  12.         while(true){
  13.                 String str = sc.next();
  14.                 String regex = "^[1-9]\\d{3}\\-([1-9]|[0][1-9]|[1][0-2])\\-([1-9]|[0][1-9]|[1-2]\\d|[3][0-1])$";
  15.                 if(str.matches(regex)){
  16.                         String[] strs = str.split("-");
  17.                         int year= Integer.parseInt(strs[0]);
  18.                         int month = Integer.parseInt(strs[1]);//MONTH指示月份的 get 和 set 的字段数字。这是一个特定于日历的值。在格里高利历和罗马儒略历中一年中的第一个月是 JANUARY,它为 0;最后一个月取决于一年中的月份数。
  19.                         int date =  Integer.parseInt(strs[2]);
  20.                         sc.close();
  21.                         
  22.                         Calendar c = Calendar.getInstance();
  23.                         c.set(year, month-1, date);
  24.                                 int week = c.get(Calendar.DAY_OF_WEEK);
  25.                                 String weekday = null;
  26.                                 switch(week-1){
  27.                                         case 0:weekday="星期日";
  28.                                         break;
  29.                                         case 1:weekday="星期一";
  30.                                         break;
  31.                                         case 2:weekday="星期二";
  32.                                         break;
  33.                                         case 3:weekday="星期三";
  34.                                         break;
  35.                                         case 4:weekday="星期四";
  36.                                         break;
  37.                                         case 5:weekday="星期五";
  38.                                         break;
  39.                                         case 6:weekday="星期六";
  40.                                         break;
  41.                                 }
  42.                                
  43.                                 System.out.println(weekday);
  44.                                 System.out.println("一年中的第"+c.get(Calendar.DAY_OF_YEAR)+"天");
  45.                                 return;
  46.                 }
  47.                 else{
  48.                         System.out.println("输入格式不正确,请重新输入:");
  49.                 }
  50.         }
  51.         }
  52. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报 1 0

收到了,多谢大神
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马