要求是这样,提示要求输入一串整数字符的字符串(YYYYMM)作为一个查看的年份和月份,判断一下这个月有多少个自然日,也即多少天。
如果数字的字符串超出限制或不合法,则输出错误提示,并提示重新输入,直到正确并计算结果。

前期准备工作(包括相关工具或所使用的原料等)一台再正常不过的已经配置了java环境的电脑一款适合自己的开发集成环境,笔者自己用的是eclipse Kepler活跃的大脑,勤劳的双手 YYYYMM这个月有多少天?
第一个要考虑的问题,如何判断月份。
我们会用一个switch语句区分大小月:
一三五七八十腊,三十一天永不差。
剩下的除了二月份需要判断平闰年之外都是三十天。
如图:

第二要考虑的问题,就是怎么判断平闰年。
一个年份数可以被100整除的话,如果同时也可以被4整除才是闰年,否则的话ta是平年。
一个年份数不能被100整除的话,如果ta此时可以被4整除也是闰年,否则的话ta是平年。
如图:

接下来,如果获得一个年份和月份的数字呢?
这是我们今天的重头戏。
我们需要做许多判断,这里,我们分很多步骤来详述。

获取输入参数,这里用Scanner类的非静态nextInt()方法。
Scanner sc=new Scanner(System.in);
int number=sc.nextInt();

但是,如果输入的是字母,或者位数不足,不符合YYYYMM格式,那不就麻烦了?所以,我们还需要加以判断。
这里就不能直接从scanner里面获取数字了,我们要获取的是字符串,
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
然后用正则表达式判断一下。
if (!str.matches("^[1-9]{1}[0-9]{5}$")) {
System.out.println("Not an integer number! Input again:");
}

上一步骤中的正则我们偷了一点儿小懒,是为了让大家更容易理解。
所以,这里我们还缺少对月份的判断。很简单,如图:

最后,我们写一个main方法测试一下,看看是否是咱预期的效果。
String number=scannerNumber();
int year=Integer.parseInt(number.substring(0, 4));
int month=Integer.parseInt(number.substring(4));
System.out.println("this is month has " + daysOfThisMonth(year, month));
注意事项注意总结,温故知新嘛!不要玩一玩就过去了。也别变成和笔者一样的呆子哦~~耐心,认真,仔细,严谨。经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本教程系本人依照真实经历原创,未经许可,谢绝转载。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
