我正在编写一张允许您支付公交车票的卡,它可以为您当天支付的前两张票中的学生提供特别折扣#34;(80%的折扣)。
我放置了一个变量来计算你旅行的次数然后根据你没有超过你被授予的2个折扣来折扣,但是我无法找到一种方法让变量值在一天时变回0已经过去了。我必须指定我将使用的代码是对象TravelCard
的扩展(继承),并且有几个变量priceXtravel
和balance
从哪个继承而来。
public class StudentTravelCard {
private double discount;
private int discountCounter;
public StudentTravelCard(int cardiD){
super(cardiD);
discount = 0.8;
}
public void newTravel() {
if(discountCounter < 2) {
super.newTravel();
balance += (priceXtravel*discount);
discountCounter ++;
}
else {
super.newTravel;
//discountCounter = 0;? what if they continue to travel on that day?
}
}
}
答案 0 :(得分:1)
在您的模型中,没有日期或时间信息。如果您想拥有一个取决于时间(“一天”)的行为,您将必须存储此信息,以便计算第一次旅行和新旅行之间的经过时间。
实施将取决于您的要求:
无论如何,逻辑是在第一次调用Date
时存储Calendar
或newTravel()
实例,然后将此日期与后续调用的当前日期进行比较。
discountCount < 2
,则应用折扣等等......
答案 1 :(得分:0)
在你的newTravel()中你可以删除注释行并添加另一个方法resetDay()以在新的一天重置为0折扣。
当然,resetDay()必须由知道关于当前时间等的东西调用。
public class StudentTravelCard {
private double discount;
private int discountCounter;
public StudentTravelCard(int cardiD){
super(cardiD);
discount = 0.8;
}
public void newTravel() {
if(discountCounter < 2) {
super.newTravel();
balance += (priceXtravel*discount);
discountCounter ++;
}
else {
super.newTravel();
}
}
public void resetDay() {
discountCounter = 0;
}
}