我正在做一个关于在java中创建酒店预订系统的项目。我需要帮助,因为我觉得我的代码是正确的(显然不是)但它似乎没有给我正确的结果。
所以我想做的是我有2个日期,一个用于办理登机手续,一个用于结账。 我向用户询问签入日期是否正常,我将签入日期设置为输入。然后我问他/她将要入住的夜晚。通过使用入住日期和入住天数,我应该能够计算预订的费用,但是当我将入住日期加入到结账日期时,它会将登记日期设置为结账日期并计算成本从那里。
示例:Checkin = thurs,night of = =。
它将登记日期设置为星期六(星期二+ 2),并将结帐日期设置为该日期,但计算从星期一到星期一的入住费用。
String days [] = {"MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"};
Calendar ci = r.getStartDate();
System.out.println("Original: " + ci.getTime());
Calendar co = ci;
for(int y = 0; y < nights; y++)
{
co.add(Calendar.DAY_OF_MONTH, 1);
int dayOfWeek = co.get(Calendar.DAY_OF_WEEK);
cost = cost + rates[dayOfWeek-1];
}
System.out.println("From: " + r.getStartDate().getTime());
System.out.println("Until: " + co.getTime());
r.setEndDate(co);
cost = cost - (cost*disc);
r.setCost(cost);
}
原始输出是正确的日期,但不同之处是奇怪的。
任何帮助将不胜感激!
答案 0 :(得分:0)
您的开始日期和结束日期是相同的,因为您的开始和结束日历对象是相同的对象:
Calendar ci = r.getStartDate();
Calendar co = ci;
您对co
所做的任何修改也会修改r.getStartDate()
(和ci
,但您永远不会使用该变量。)
我怀疑你想这样做:
Calendar co = new Calendar();
co.setTime(r.getStartDate().getTime());
完全删除ci
变量。