设计并实现一个Day类用于表示一周中的某一天。Day类可以表示出是星期几,例如Sun表示星期天。对一个Day类型的对象,程序可以实现如下操作:
(1)设置星期几
(2)显示星期几
(3)返回星期几
(4)返回下一天
(5)返回前一天
(6)计算并返回当天之后的某一天是星期几。例如,如果当前是星期一,那么4天后应该得到并返回星期五。同样,如果今天是星期四,那么13天后应该返回星期一。
(7)添加适当的构造方法。
(8)定义一组方法以实现在上面1-7中指定的对Day类的操作。
(9)编写一段程序来测试对Day类的各种操作。
代码为:
import java.util.Scanner;
class Day {
int d;
public Day() {
d = 1;
}
public Day(int i) {
if (i >= 1 && i <= 7) //判断输入的当前星期是否规范
d = i;
else {
System.out.println("输入不正确");
System.out.println("程序结束");
System.exit(1); //若输入不符合要求,程序结束
}
}
public void nextDate() { //后一天
addSomeDate(1);
}
public void beforeDate() { //前一天
addSomeDate(-1);
}
public void addSomeDate(int i) {
d = (d + i) % 7; //几天后的一天
}
public String toString() {
String week = " ";
switch (d) {
case 1:
week = "Mon";
break;
case 2:
week = "Tue";
break;
case 3:
week = "Wen";
break;
case 4:
week = "Thu";
break;
case 5:
week = "Fri";
break;
case 6:
week = "Sat";
break;
default:
week = "Sun";
break;
}
return week;
}
public static void main(String[] args) {
System.out.println("请输入当前为星期几(只可为数字1-7):");
Scanner input = new Scanner(System.in);
int a = input.nextInt();
Day day = new Day(a); //实例化对象
System.out.println("今天为"+day.toString());
System.out.println("想返回前一天请输入1,返回后一天请输2,如想计算几天后请输3:");
int b= input.nextInt();
if (b!=1&&b!=2&&b!=3) { //防止输入不规范
System.out.println("输入不正确");
System.out.println("程序结束");
System.exit(1);
}
switch (b) {
case 1:
day.beforeDate();
System.out.println("前一天为:"+day.toString());
break;
case 2:
day.beforeDate();day.nextDate();
System.out.println("后一天为:"+day.toString());
break;
case 3:
System.out.println("请输入想计算几天后:");
int c= input.nextInt();
day.addSomeDate(c);
System.out.println(c+"天后为:"+day.toString());
break;
}
}
}
输出示例:
可以增进的修改:
1. 增加一个方法
public Day getDate() { //public 类名 方法名()的返回类型是这个类的实例(对象)
return new Day(d);
}
调用时
day.nextDate();
System.out.println(day.getDate()); //返回下一天
可以使代码更简洁明了
2. 可以增加循环,实现多次查询
可以在上述代码末增加以下代码:
System.out.println("是否继续查询(继续请输1,结束请输2):");
int e= input.nextInt();
while(e==1) {
System.out.println("想返回前一天请输入1,返回后一天请输2,如想计算几天后请输3:");
int d= input.nextInt();
switch (d) {
case 1:
day.beforeDate();
System.out.println("前一天为:"+day.toString());
break;
case 2:
day.nextDate();
System.out.println("后一天为:"+day.toString());
break;
case 3:
System.out.println("请输入想计算几天后:");
int c= input.nextInt();
day.addSomeDate(c);
System.out.println(c+"天后为:"+day.toString());
break;
}
System.out.println("是否继续查询(继续请输1,结束请输2):");
e= input.nextInt();
}
System.out.println("程序结束");
System.exit(1);
输出为:
参考页面:
代码参考网址
类型 类名 方法名(){ }的意思
这里是平平无奇的77,妄想优秀 ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ ▇ … 0%,若想转载请注明原链接,欢迎下次再来!!