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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 零敢 中级黑马   /  2013-12-18 15:57  /  2516 人查看  /  9 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文


这是我的题目和自己做的答案代码;
其中的switch语句我觉得有点麻烦;想看看有没有其他更简单的做法替换掉switch语句

/*9、 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,
并且计算出是一年中的第几天。*/
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.util.Date;  
public class Problem9{
        public static void main(String[] args){
                Scanner r=new Scanner(System.in);
                String x=r.nextLine();
                String regex="\\D";
                String a[]=x.split(regex);
                int y=Integer.parseInt(a[0]);
                int m=Integer.parseInt(a[1]);
                int d=Integer.parseInt(a[2]);
                int n=d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1;
                switch(n%7)  {
                        case 1:System.out.println("今天是星期一");
                        break;
                        case 2:System.out.println("今天是星期二");
                        break;
                        case 3:System.out.println("今天是星期三");
                        break;
                        case 4:System.out.println("今天是星期四");
                        break;
                        case 5:System.out.println("今天是星期五");
                        break;
                        case 6:System.out.println("今天是星期六");
                        break;
                        case 0:System.out.println("今天是星期天");
                }
      try{
              DateFormat fm = new SimpleDateFormat("yyyy-MM-dd");
              Date date=fm.parse(x);
              String str = String.format("%tj",date);
              System.out.println("今天是这年的第"+str+"天");
      }catch (ParseException e) {  
          e.printStackTrace();  
      }
        }
}

9 个回复

倒序浏览
我觉得判断选择的语句就是switch和if语句,按你的做法,计算当前是星期几,这种做法貌似不能简化了把,
回复 使用道具 举报
定义一个一维数组String weeks[]={"","日"------"六"};将n%7作为脚标,可以简化一点点。
回复 使用道具 举报
当然用if。。。else if也是可以的,但还是你这种方式比较简便写,希望楼主采纳,谢谢
回复 使用道具 举报
切割字符串
建立Calendar类对象
然后用set()方法设置值
通过get(Calendar类的字段)方法就可以获取到星期几以及一年中的第几天
回复 使用道具 举报 1 0
查表法,毕向东老师的视频里有的
定义一个数组把星期的七天存放进数组
根据索引获取
回复 使用道具 举报
import java.text.*;
import java.util.*;
class TestDate
{
        public static void main(String[] args) throws Exception
        {
                Scanner sc = new Scanner(System.in);
                String s = sc.nextLine();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                Date date = sdf.parse(s);
                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd-EE-DD");
                String ss = sdf1.format(date);
                String[] info = ss.split("-");
                System.out.println(info[3]+"\t,第"+info[4]+"天");
        }
}
回复 使用道具 举报
hurryup 高级黑马 2013-12-18 19:56:23
8#
int n=d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1;
这句代码什么意思?请注解一下,谢谢@
回复 使用道具 举报
这个题要用上Calendar这个类的方法去做。
回复 使用道具 举报
顶 个。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马