黑马程序员技术交流社区
标题:
我的一个入学基础测试题,求助
[打印本页]
作者:
零敢
时间:
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