打渔还是晒网
中国有句老话叫“三天打渔,两天晒网”。假设有一个人从2000 年1 月1 日 开始“三天打渔两天晒网”,读入三个整数,分别表示年份、月份、日期, 问这三个整数所表示的那天这个人在打渔还是在晒网? 此处假设:1个月是30天,一年是365天
分析:使用Scanner接收数据,使用条件计算天数再对5取余,判断对应的行为
这里使用了两种:for和直接计算 推荐使用直接计算
package day05;
import java.util.Scanner;
public class Demo6 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入2000年以上的年份:");
int year = scanner.nextInt();
if (year<2000){
System.out.println("输入的年有误");
}else {
System.out.println("请输入正确的月数:");
int month = scanner.nextInt();
if (month<=0||month>12){
System.out.println("输入的月有误");
}else {
System.out.println("请输入正确的日数:");
int day = scanner.nextInt();
if (day <= 0||day>30) {
System.out.println("输入的天有误");
} else {
System.out.println(judge(year, month, day));
}
}
}
}
}
//方法1:
// public static String judge(int Y,int M,int D) {
// int index = 0;//从2000,1.1开始的每天
// for (int i = 2000; i <= Y; i++) {
// if (i > 2000) {
// index += 365;//从2000开始,每过一年就加365天
// }
// for (int j = 1; j <= M; j++) {
// if (j > 1)
// index += 30;//每过一个月加30天
// }
// }
//
// index += D; //加天数
//
// if (index <= 5) {
// int m = index + 5;
// return ((m % 5) ==4)||((m % 5) ==0) ? "晒网" : "打鱼";
// } else {
// int n = index + 10;
// return ((n % 5) ==4)||((n % 5) ==0) ? "晒网" : "打鱼";
// }
// }
//
//方法2:
public static void ff2(int year, int month, int day) {
int num = (2000 - year) * 365 + (12 - month) * 30 + day;
if(num <=5)
{
int m = num + 5;
System.out.println(((m % 5) == 4) || ((m % 5) == 0) ? "晒网" : "打鱼");
} else
{
int n = num;
System.out.println(((n % 5) == 4) || ((n % 5) == 0) ? "晒网" : "打鱼");
}
}
}