本题思路:首先定义一个初始年份year0,然后利用循环控制与if语句的嵌套实现用户的输入,用户只有输入条件有效(年:2010及2010之后,月:112,日:131)的年月日才能进行程序的进一步运行,用户只有三次输入的机会,三次都失败之后程序直接结束。之后利用循环控制与条件语句的嵌套判断经过的年份是否为闰年,闰年为366天,平年为365天,之后先判断是否为闰年,利用switch语句将月份经过的天数经过判断之后相加,日数则直接相加。将计算的总天数sum求5的余数,若余数为1,2,3则为打鱼,否则为晒网。
下面就是全部代码了:
public class Application {
public static void main(String[] args) {
int year0 = 2010;
System.out.println("请输入想查询的日期(年:2010及2010之后;月:1~12;日:1~31):");//输入规则
Scanner s = new Scanner(System.in);
System.out.println("年:");
int year = 0;
for (int i = 0; i < 3; i++) {
year = s.nextInt(); //输入年
if (year<2010){
System.out.println("您输入的年份不符合规范!");
if(i < 2){
System.out.print("请再次输入:");
}
}
else{
break;
}
if( i == 2 ){
System.out.println("您已失误三次,程序终结!");
System.exit(0); //结束程序
}
}
System.out.println("月:");
int month = 0; //输入月
for (int i = 0; i < 3; i++) {
month = s.nextInt(); //输入月
if (month <= 0||month > 12){
System.out.println("您输入的月份不符合规范!");
if(i < 2){
System.out.print("请再次输入:");
}
}
else{
break;
}
if( i == 2 ){
System.out.println("您已失误三次,程序终结!");
System.exit(0); //结束程序
}
}
System.out.println("日:");
int day = 0; //输入日
for (int i = 0; i < 3; i++) {
day = s.nextInt(); //输入日
if (day <= 0||day > 31){
System.out.println("您输入的日数不符合规范!");
if(i < 2){
System.out.print("请再次输入:");
}
}
else{
break;
}
if( i == 2 ){
System.out.println("您已失误三次,程序终结!");
System.exit(0); //结束程序
}
}
int sum = 0;
for (int i = year0; i <= year - 1; i++) {
if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) //判断year是否为闰年
{
sum += 366;
} else {
sum += 365;
}
}
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
switch (month) {
case 2:
sum += 31;break;
case 3:
sum += 29 + 31;break;
case 4:
sum += 31 + 29 + 31;break;
case 5:
sum += 30 + 31 + 29 + 31;break;
case 6:
sum += 31 + 30 + 31 + 29 + 31;break;
case 7:
sum += 30 + 31 + 30 + 31 + 29 + 31;break;
case 8:
sum += 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
case 9:
sum += 31 + 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
case 10:
sum += 30 + 31 + 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
case 11:
sum += 30 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
case 12:
sum += 30 + 30 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 29 + 31;break;
}
} else {
switch (month) {
case 2:
sum += 31;break;
case 3:
sum += 28 + 31;break;
case 4:
sum += 31 + 28 + 31;break;
case 5:
sum += 30 + 31 + 28 + 31;break;
case 6:
sum += 31 + 30 + 31 + 28 + 31;break;
case 7:
sum += 30 + 31 + 30 + 31 + 28 + 31;break;
case 8:
sum += 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
case 9:
sum += 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
case 10:
sum += 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
case 11:
sum += 30 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
case 12:
sum += 30 + 30 + 30 + 31 + 31 + 30 + 31 + 30 + 31 + 28 + 31;break;
}
}
sum += day;
int a = sum % 5;
System.out.println("从2010年1月1日开始已经过了" + sum + "天");
switch (a) {
case 0:
System.out.println("晒网ing!");break;
case 1:
System.out.println("打鱼ing!");break;
case 2:
System.out.println("打鱼ing!");break;
case 3:
System.out.println("打鱼ing!");break;
case 4:
System.out.println("晒网ing!");break;
}
}
}
输出测试:
以上就是所有的思路分析与代码分享,整个程序不使用数组,只使用基本的循环语句与条件语句就可以完成。