JAVA实验——更改C++中4到12章个人银行账户管理系统案例的心得体会(第6和7章)

3.第6章——增添字符串、对象数组

     改动的一些点:本章实例中增加了Date类,对照前两章做出java的一些基本类格式的改动即可。此外的改动有:

                     (1)java中字符串类型不需要像C++那样还要调用std::string,而直接使用默认包lang中String类。

                     (2)在使用Date对象引用作参数时,由于java没有引用类型的符号&,所以在作函数形参时直接使用Date对象。

                     (3)在创建Date对象时,java不能直接使用类名创建类的对象,而需要用Date date=new Date(int,int,int)才能声明并初始化一个Date对象,同样当需要创建一个Date对象作参数时也需要new一个Date对象。

                     (4)java里面对象数组有多种写法,其中的每一个对象也都需要和上面说的方法一样一个一个new。最简单的写法就是:SavingsAccount[]accounts={new SavingsAccount(date,String,double),new ......}

         (5)C++中的sizeof()函数用来计算对象所占内存空间大小,在java里没有。所以将n=sizeof(accounts)/sizeof(SavingsAccount)改成了accounts.length()。其中length()方法返回数组长度,实现的功能相同。

源代码:

Data类:public class Date {
private int year,month,day,totalDays;//该日期是从公元元年1月1日开始的第几天
private final int[] DAYS_BEFORE_MONTH={0,31,59,90,120,151,181,212,243,273,304,334,365};
public Date(int year,int month,int day){
this.year=year;
this.month=month;
this.day=day;
if(day<=0||day>getMaxDay()){
System.out.print("Invalid date");
show();
System.out.println("");
System.exit(1);
}
int years=year-1;
totalDays=years*365+years/4-years/100+years/400+DAYS_BEFORE_MONTH[month-1]+day;
if(isLeapYear()&&month>2) totalDays++;
}
public final int getMaxDay() {
if(isLeapYear() && month==2) return 29;
else return DAYS_BEFORE_MONTH[month]-DAYS_BEFORE_MONTH[month-1];
}
public final void show() {
System.out.print(getYear()+"-"+getMonth()+"-"+getDay());
}
public final int getYear() {return year;}
public final int getMonth() {return month;}
public final int getDay() {return day;}
public final boolean isLeapYear() {
return year%4==0&&year%100!=0||year%400==0;
}
public final int distance(final Date date) {
return totalDays-date.totalDays;
}
}

SavingAccount6类:

public class SavingsAccount6 {

private static double total=0;
private String id;
private Date lastDate;//账号,上一次余额变动日期
private  double balance,rate,accumulation;//余额,年利率,余额按日累加值
public static double getTotal(){return total;}
public SavingsAccount6(final Date date,final String id,double rate){
lastDate=date;
this.id=id;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值