描述:
一位老者,从1970年1月1日,三天打鱼,两天晒网,日复一日。求,输入从1970/01/01(beginDate)到今天中的任何一天日期nowDate,可以得出他是在打鱼,还是在晒网。
思路:
- 先算出nowDate到beginDate一共相差多少毫秒mills
- 用mills除以(10006060*24)+1得到天数datenum
- 以10天为一个循环,余数为1 、2 、3 、6 、7 、8 的打鱼,其他的晒网
- datenum%10,并转换成String judge
- 创建String str = “123678”;
- 同 str.contains(judge) 判断余数是否在str中
控制类:
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Control{
long nowMills,beginMills;
String date;
public Control(String date) {
super();
this.date = date;
}
public void getResult() throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
java.util.Date timeNumNow = simpleDateFormat.parse(date);//解码,但是会有异常,所以要抛出异常
nowMills = timeNumNow.getTime();//将String日期转换成毫秒
java.util.Date timeNumBegin = simpleDateFormat.parse("1970/01/01");
beginMills = timeNumBegin.getTime();//将String日期转换成毫秒
long daynum = (nowMills-beginMills)/(1000*60*60*24)+1;//算出天数
String judge = daynum%10+"";
String str = "123678";
if (str.contains(judge)) { //判断余数是否在str中
System.err.println(date+"渔夫在打鱼\n");
}else {
System.out.println(date+"渔夫在晒网\n");
}
}
}
视图类:
import java.text.ParseException;
import java.util.Scanner;
public class View{
public void pageView() throws ParseException {//因为getResult()抛出异常,所以...
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("1_查看\t\t2_退出");
System.out.print("请选择:");
int choice = scanner.nextInt();
if (choice == 1) {
System.out.print("请输入日期(yyyy/MM/dd):");
String date = scanner.next();
System.err.print("结果:");
Control control = new Control(date);
control.getResult();
}else {
if(choice == 2) {
System.err.println("已退出!!");
break;
}else {
System.out.println("无效选项!");
}
}
System.out.println("------------------------------");
}
}
}
main:
import java.text.ParseException;
public class ThreeFlish_TwoNet {
public static void main(String[] args) {
System.out.println("******三天打鱼两天晒网*******\n");
View view = new View();
try {
view.pageView(); //因为pageView()抛出异常,所以这里要接收异常
} catch (ParseException e) {
e.printStackTrace();
}
}
}
结果: