这是一个银行账户模拟程序,我希望使用交易频率将日期添加到交易中,以将日期添加到日历中,从而为每笔交易正确增加日期。但是,当我打电话获取另一个班级的日期时,它会给我每笔交易的总添加日期。所以说四个星期过去了,它会显示每笔交易发生在这四个星期,而不是每周。底部的 system.out.println 将正确的日期打印到控制台,所以我认为它与我将它存储在数组列表中的方式有关。
如果有人能告诉我哪里出错了,我会很高兴。
public void run() {
calendar = Calendar.getInstance();
while (duration > 0) {
duration--;
if (duration % freq == 0) {
if (type == false) {
this.withdraw(amount, billName);
Transaction out = new Transaction(billName, amount, "Out",date);
transList.add(out);
date.setTime( calendar.getTime().getTime());
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, freq*7);
date.setTime( calendar.getTime().getTime());
} else {
this.deposit(amount, billName);
Transaction in = new Transaction(billName, amount, "In",date);
transList.add(in);
}
}
try {
Thread.sleep(1000);
System.out.println(date);
} catch (InterruptedException ex) {
Logger.getLogger(
DepositThread.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public void sortType( String sortPara ) {
trans.setText("");
for(int i=0; i<transList.size();i++){
String textArea = trans.getText();
transList.get(i).getDate();
if(transList.get(i).type.equals(sortPara)) {
System.out.println(transList.get(i).getName());
trans.setText(textArea+transList.get(i).getName()+
" "+String.valueOf(transList.get(i).getAmount())+" "+
transList.get(i).getDate()+"\n");
}
}
}