用户输入一个日期,计算时星期几,并计算时一年中的某一天,使用自定义方法判断
2015-02-05 00:16
821 查看
说明:这篇博客是和之前的“用户输入一个日期,计算时星期几,并计算时一年中的某一天,使用正则表达式判断”,实现的的功能相同,但是这次使用的是,自定义方式来判断。说实话,之前用正则表达式那种方式的确减少了很多代码,但是那个正则表达式理解起来很痛苦,这次这个代码虽然多,但是相对好理解一点。
题目:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
运行效果
之前使用正则表达式实现这个功能的:地址:http://blog.csdn.net/lmh820822/article/details/43195677
题目:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
import java.util.Calendar; import java.util.Scanner; public class Test99 { public static void main(String[] args) { date(); } // 题目:输入某年某月某日,判断这一天是这一年的第几天? public static void date() { //定义一个数组,用于存放星期值 String[] week = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; // 定义一个变量,用于接收用户输入的时间 // 创建一个Scanner对象 Scanner sc = new Scanner(System.in); System.out.println("请输入日期:格式:yyyy-MM-dd"); // 进入死循环,接收输入的年月日,当输入的日期合法时,结束输入 while (true) { // 接收用户输入 String str = sc.nextLine(); //测试日期 // String str = "2015-02-05"; // 判断输入的格式是不是合法,采用正则表达式判断。 String regex = "[0-9]{4}-[0-1][0-9]-[0-3][0-9]"; //只能确定判定输入的格式是不是正确 if (!str.matches(regex)) { System.out.println("输入格式不合法,请重新输入"); //如果当前格式输入错误,提示重新输入 continue; } // 定义一个数组,用于接收拆分的字符串 String[] s = str.split("-"); //判断输入的数据是否合法,如果不合法将重新输入,如果合法就继续下面的计算 if(!judgeDate(Integer.parseInt(s[0]),Integer.parseInt(s[1])-1,Integer.parseInt(s[2]))){ System.out.println("输入数据不合法,请重新输入"); continue; } //定义一个类,获取时间 Calendar c = Calendar.getInstance(); //设置时间为输入时间,s[0]存放年,s[1]存放月,s[2]存放日。 //由于输入的月份是按照我们理解的日期计算【1-12】月,而国外采用的是【0-11】月,所以需要减一 c.set(Integer.parseInt(s[0]), Integer.parseInt(s[1])-1, Integer.parseInt(s[2])); //打印结果,获取时间 System.out.println("今天是"+s[0]+"的第" + c.get(Calendar.DAY_OF_YEAR) + "天\t"+week[c.get(Calendar.DAY_OF_WEEK)-1]); break; } } /* * 功能:判断输入的日期是不是合法, * 输入参数:接收年月日,int year,byte month,byte day * 返回值:返回boolean类型数据,当输入的值合法时,返回true,否则false * */ public static boolean judgeDate(int year,int month,int day){ Calendar c = Calendar.getInstance(); //先判断年份和月份是否合法 if(year>1900 && (month>=0 && month<12)){ //判断是不是月小 if(month == 3 || month == 5 || month == 8 || month == 10){ // 如果月小的话,日期的时间限制为1-31 if(day>0 && day<31){ // 满足要求,将年月日到设置为指定的日期(这里为当前输入的日期),并且结束输入 c.set(year, month, day); return true; } System.out.println("日期输入错误1!"); //执行这句,则说明输入的年、月都正确,但是输入的日期不合法。 return false; } //判断是不是月大 else if(month == 0 || month == 2 || month == 4 || month == 6 || month == 7 || month == 9 || month == 11){ // 如果月大的话,日期的时间限制为1-30 if(day>0 && day<32){ // 满足要求,将年月日到设置为指定的日期(这里为当前输入的日期),并且结束输入 c.set(year, month, day); return true; } System.out.println("日期输入错误2!"); //执行这句,则说明输入的年、月都正确,但是输入的日期不合法。 return false; } // 判断本年是不是闰年,根据是不是闰年来确定day的值是不是合法 else if(month == 1){ // 设置当前的时间为三月一日, c.set(year, month+1,1); // 将时间往前推一天,就可以获取本年二月的最大值 c.add(Calendar.DAY_OF_MONTH, -1); // System.out.println(c.get(Calendar.DAY_OF_MONTH)); if(day>0 && day<c.get(Calendar.DAY_OF_MONTH)){ c.set(year, month, day); return true; } System.out.println("日期输入错误3!"); //执行这句,则说明输入的年、月都正确,但是输入的日期不合法。 return false; } } System.out.println("日期输入错误4!"); //执行这句,则说明输入的年、月输入错误。 return false; } }
运行效果
之前使用正则表达式实现这个功能的:地址:http://blog.csdn.net/lmh820822/article/details/43195677
相关文章推荐
- 输入一个日期,判断这个日期在一年中是哪一天,是星期几,计算两个日期间的天数,使用字符串输出日期
- 黑马程序员---------------------编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期, * 程序计算这一天是星期几,并且计算出是一年中的第几天
- 黑马程序员 测试题:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天
- 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天
- 黑马程序员—编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期, *程序计算这一天是星期几,并且计算出是一年中的第几天。 */
- 输入一个日期,求这一天是星期几,并且计算出是一年中的第几天
- 用户输入一个日期计算是星期几以及是一年中的第几天
- 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)
- 输入一个日期,格式如:2010 10 24 ,判断这一天是这一年中的第几天。
- C++ 实现判断一个输入日期是星期几,是一年中的第几天
- C#8—写一个测试标准身高体重的程序、输入日期年月日, 计算这一天是一年中的第几天(考虑闰年)
- 用C语言来实现_输入一个日期(年月日),计算是这一年中的第几天
- 判断一个用户输入的日期是不是闰年. Python 代码
- java 输入日期取星期几的方法 计算两个时间段中间的
- 编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。 程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。 请使用3个数组处理函数来分别进行输入、显示和计算
- NYOJ_75 日期计算 (判断这一天是这一年中的第几天)
- [置顶] C语言实验:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几。
- 交互式让用户输入一个文件路径,判断文件是否存在,若存在判断文件类型,若文件是普通文件,不能使用wc。
- 输入一个日期,算出这一天是这一年的第几天
- 使用DateValidator判断用户输入的日期格式,并用DateFormatter对输入日期格式化。