只上了三节Java课的萌新小白写的经典三天打鱼两天晒网程序
##首先声明:
本人小白,第一次写博客,大佬们请多担待:
##问题描述: 中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
##解决思路: 先将问题分解来看;
- 首先写一个判断是否是闰年的函数出来
- 通过循环找出从2010年到键入年份(不包括键入年份)之间有多少个闰年,便于后续计算
- 对键入年份是否是闰年做出两个数组 ,元素为闰年和平年的每个月份的天数,并对数组进行操作完成键入年份的整月份(即从1~(month-1))天数的累加
- 算出从2010年1月1日至键入日期间的总天数
- 总天数对5求余即 总天数%5 通过判断余数 1、2、3为打鱼,0、4为晒网 最后得出结果
##流程图:
##干代码:
import java.util.Scanner;
public class TiaoshiPrj {
public static int year;
public int month;
public int day;
public int bennian;
public static int x;
static int count=0;
public void input() { //输入函数
Scanner in = new Scanner(System.in); //定义scanner
boolean w=true;
while ( w ) {
System.out.println("请输入月:");
month = in.nextInt();
if (month<=0 || month>=13) {
System.out.println("输入不合法");
}
else w=false;
}
System.out.println("请输入日:");
day = in.nextInt();
}
public static boolean compar(int years) { //判断是否是闰年
if((years%4==0&&years%100!=0)||(years%400==0)) {
//System.out.println("true");
return true;
}
//else System.out.println("false");
return false;
}
public static int numRunyear(int y) { //闰年数量
year=y;
for ( int i=2010;i<y;i++ ) {
if (compar(i)) {
count+=1; //除本年外闰年个数的计数
}
}
//System.out.println(+count);
return count;
}
public int benNian() { //计算本年整月的天数 *****本函数无误
int[] runmonth = {31,29,31,30,31,30,31,31,30,31,30,31};
int[] pingmonth = {31,28,31,30,31,30,31,31,30,31,30,31};
int sum=0;
if ( compar(year) ) { //闰年
for (int j=0;j<month-1 ;j++)
sum+=runmonth[j];
bennian=sum;
//System.out.println("闰");
}
else { //平年
for (int j=0;j<month-1 ;j++)
sum+=pingmonth[j];
bennian=sum;
//System.out.println("平");
}
//System.out.println("本年整月天数"+bennian);
return sum;
}
public void dayuShaiwang() {
int p=0;
int pingdays;
int rundays;
int numdays;
p=(year-2010)-count; //计算平年的个数
pingdays=p*365; //计算平年的总天数
rundays=count*366; //计算闰年的总天数
numdays=pingdays+rundays+benNian()+day; //总天数
//System.out.println("总天数"+numdays); //输出总天数
//if (((numdays%5)==0)&&((numdays%5)==4))
//System.out.println("晒网");
//else System.out.println("打鱼");
if (numdays%5 >= 1 && numdays%5 <= 3)
System.out.println("在打鱼!");
else
if (numdays%5 == 4 || numdays%5 == 0)
System.out.println("在晒网!");
}
public static void main(String[] args) {
TiaoshiPrj t = new TiaoshiPrj();
Scanner in = new Scanner(System.in);
boolean s=true;
while ( s ) {
System.out.println("请正确输入年");
t.numRunyear(in.nextInt());
if(year<2010){ //判断年份
System.out.println("输入不合法");
}
else s=false;
}
t.input();
t.benNian();
t.dayuShaiwang();
}
}
##运行结果如下:
谢谢观看~