黑马程序员技术交流社区

标题: 我的一个入学基础测试题,求助 [打印本页]

作者: 零敢    时间: 2013-12-18 15:57
标题: 我的一个入学基础测试题,求助

这是我的题目和自己做的答案代码;
其中的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();  
      }
        }
}
作者: 刘松703    时间: 2013-12-18 16:12
我觉得判断选择的语句就是switch和if语句,按你的做法,计算当前是星期几,这种做法貌似不能简化了把,
作者: 汪伟楠    时间: 2013-12-18 16:30
定义一个一维数组String weeks[]={"","日"------"六"};将n%7作为脚标,可以简化一点点。
作者: hurryup    时间: 2013-12-18 16:30
当然用if。。。else if也是可以的,但还是你这种方式比较简便写,希望楼主采纳,谢谢
作者: 風諾    时间: 2013-12-18 16:40
切割字符串
建立Calendar类对象
然后用set()方法设置值
通过get(Calendar类的字段)方法就可以获取到星期几以及一年中的第几天
作者: §傻、才乖    时间: 2013-12-18 17:54
查表法,毕向东老师的视频里有的
定义一个数组把星期的七天存放进数组
根据索引获取
作者: ~IN_HAND~    时间: 2013-12-18 19:12
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
int n=d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1;
这句代码什么意思?请注解一下,谢谢@
作者: 张天昊76    时间: 2013-12-18 21:05
这个题要用上Calendar这个类的方法去做。
作者: Piston    时间: 2014-7-21 22:10
顶 个。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2