这是一个我按照书上打的例子,实现一个BankTransaction类,允许用户如下操作:开设账户,取消账户,存钱,取钱,转账,把钱从一个账户转到另一个账户的时候打印一个或者多个已经存在的账户的报告。
public class ACCount { //定义账号
private String id;
private String Name;
private Double total;
ACCount(String i,String n,Double t)
{
id=i;
Name=n;
total=t;
}
public String getId()
{return id; }
public void setId(String i)
{ id=i; }
public String getName()
{ return Name;}
public void setName(String n)
{ Name=n; }
public Double getTotal()
{ return total;}
public void setTotal(Double t)
{
if(t<0)
System.out.println("金额错误");
else
total=t; }
public String toStrung()
{ return "账号"+id+"姓名:"+Name+"金额:"+total ;}
}
//第一个类public class BankTransaction {
//存储户列表以数组的方式保存,虽然储户的个数不应该有限制但是为了方便起见,在这里设置最多100个。
private ACCount[] depositors;
private int number; //实际储户个数
public BankTransaction() //账户转账方法无参
{
depositors =new ACCount[100];
number=0;
}
public BankTransaction(ACCount[] depositors,int number)
{
this.depositors=depositors;
this.number=number;
}
public void createCount(String i,String n,Double t)
{//创建账户
ACCount cnt=new ACCount(i,n,t);
//每个账户的id应该通过某种算法生成,以保证唯一性;
//这里是为了简化,直接指定账户id;
depositors[number]=cnt;
number++;
}
public void removeCount(String idn)
{//删除账户
int i;
for(i=0;i<number;i++)
{
if(idn.compareTo(depositors[i].getId())==0)
{
break;
}
if(i<number)
{
depositors[i]=null; //删除该用户的信息
for(;i<number;i++) //被删除用户后向前移一个位置
{
depositors[i]=depositors[i+1];
number--;
}
}
}
}
public String getCountInfo(String idn) //打印账户信息
{
int i;
for(i=0;i<number;i++) //查找储户所在位置
{
if(idn.compareTo(depositors[i].getId())==0)
break;
}
if(i<number)
{
return "账号:"+depositors[i].getId()+"户名:"+depositors[i].getName()+"金额:"+depositors[i].getTotal();
}
else
return "账户不存在";
}
public double fetchMoney(String idn,Double money) //取钱
{
int i;
for(i=0;i<number;i++)
{
if(idn.compareTo(depositors[i].getId())==0)
break;
}
if(i<number)
{
if(money<=depositors[i].getTotal())
{
depositors[i].setTotal(depositors[i].getTotal()-money);
return money;
}
else
System.out.println("账户金额不足");
}else
System.out.println("账号不存在");
return 0;
}
public void saveMoney(String idn,double money)
{
int i;
for(i=0;i<number;i++)
{
if(idn.compareTo(depositors[i].getId())==0)
break; }
if(i<number)
{
depositors[i].setTotal(depositors[i].getTotal()+money);
} else
System.out.println("账号不存在");
}
public void transferMoney(String id1,String id2,double money)
{
int i,j;
for(i=0;i<number;i++)
{
if(id1.compareTo(depositors[i].getId())==0)
break; }
for(j=0;j<number;j++)
{
if(id2.compareTo(depositors[i].getId())==0)
break;
}
if(i<number&&j<number)
{
if(money<depositors[i].getTotal())
{
depositors[i].setTotal(depositors[i].getTotal()-money);
depositors[j].setTotal(depositors[j].getTotal()+money);
}
else
System.out.println("账户余额不足,无法转账");
}
else
{
System.out.println("至少一个账户不存在");
}
}
@Override
public String toString()
{
int i;
String strbuf="";
for(i=0;i<number;i++)
{
strbuf=strbuf+depositors[i].toString()+"\n";
}
return strbuf;
}
}
//第二个类
public class test3_18 {
public static void main(String[] args)
{
BankTransaction bank=new BankTransaction();
bank.createCount("200902", "zhangsan", 800[b]);//问题出在这里:无法将BankTransaction中的create Count(java.lang.String,java.lang,String.java.lang.Double)应用于(java.lang.String,java.lang.String,int)[/b] bank.createCount("200902", "200901", 200);
System.out.println("初始化的账号信息是");
System.out.println("bank.toString()");
//存钱
bank.saveMoney("200901", 888);
System.out.println("给账号200901打入900");
System.out.println(bank.getCountInfo("200901"));
bank.transferMoney("200901", "200902", 200);
System.out.println("从账号200901转200到账号200902");
System.out.println(bank.toString());
}}
public class ACCount { //定义账号
private String id;
private String Name;
private Double total;
ACCount(String i,String n,Double t)
{
id=i;
Name=n;
total=t;
}
public String getId()
{return id; }
public void setId(String i)
{ id=i; }
public String getName()
{ return Name;}
public void setName(String n)
{ Name=n; }
public Double getTotal()
{ return total;}
public void setTotal(Double t)
{
if(t<0)
System.out.println("金额错误");
else
total=t; }
public String toStrung()
{ return "账号"+id+"姓名:"+Name+"金额:"+total ;}
}
//第一个类public class BankTransaction {
//存储户列表以数组的方式保存,虽然储户的个数不应该有限制但是为了方便起见,在这里设置最多100个。
private ACCount[] depositors;
private int number; //实际储户个数
public BankTransaction() //账户转账方法无参
{
depositors =new ACCount[100];
number=0;
}
public BankTransaction(ACCount[] depositors,int number)
{
this.depositors=depositors;
this.number=number;
}
public void createCount(String i,String n,Double t)
{//创建账户
ACCount cnt=new ACCount(i,n,t);
//每个账户的id应该通过某种算法生成,以保证唯一性;
//这里是为了简化,直接指定账户id;
depositors[number]=cnt;
number++;
}
public void removeCount(String idn)
{//删除账户
int i;
for(i=0;i<number;i++)
{
if(idn.compareTo(depositors[i].getId())==0)
{
break;
}
if(i<number)
{
depositors[i]=null; //删除该用户的信息
for(;i<number;i++) //被删除用户后向前移一个位置
{
depositors[i]=depositors[i+1];
number--;
}
}
}
}
public String getCountInfo(String idn) //打印账户信息
{
int i;
for(i=0;i<number;i++) //查找储户所在位置
{
if(idn.compareTo(depositors[i].getId())==0)
break;
}
if(i<number)
{
return "账号:"+depositors[i].getId()+"户名:"+depositors[i].getName()+"金额:"+depositors[i].getTotal();
}
else
return "账户不存在";
}
public double fetchMoney(String idn,Double money) //取钱
{
int i;
for(i=0;i<number;i++)
{
if(idn.compareTo(depositors[i].getId())==0)
break;
}
if(i<number)
{
if(money<=depositors[i].getTotal())
{
depositors[i].setTotal(depositors[i].getTotal()-money);
return money;
}
else
System.out.println("账户金额不足");
}else
System.out.println("账号不存在");
return 0;
}
public void saveMoney(String idn,double money)
{
int i;
for(i=0;i<number;i++)
{
if(idn.compareTo(depositors[i].getId())==0)
break; }
if(i<number)
{
depositors[i].setTotal(depositors[i].getTotal()+money);
} else
System.out.println("账号不存在");
}
public void transferMoney(String id1,String id2,double money)
{
int i,j;
for(i=0;i<number;i++)
{
if(id1.compareTo(depositors[i].getId())==0)
break; }
for(j=0;j<number;j++)
{
if(id2.compareTo(depositors[i].getId())==0)
break;
}
if(i<number&&j<number)
{
if(money<depositors[i].getTotal())
{
depositors[i].setTotal(depositors[i].getTotal()-money);
depositors[j].setTotal(depositors[j].getTotal()+money);
}
else
System.out.println("账户余额不足,无法转账");
}
else
{
System.out.println("至少一个账户不存在");
}
}
@Override
public String toString()
{
int i;
String strbuf="";
for(i=0;i<number;i++)
{
strbuf=strbuf+depositors[i].toString()+"\n";
}
return strbuf;
}
}
//第二个类
public class test3_18 {
public static void main(String[] args)
{
BankTransaction bank=new BankTransaction();
bank.createCount("200902", "zhangsan", 800[b]);//问题出在这里:无法将BankTransaction中的create Count(java.lang.String,java.lang,String.java.lang.Double)应用于(java.lang.String,java.lang.String,int)[/b] bank.createCount("200902", "200901", 200);
System.out.println("初始化的账号信息是");
System.out.println("bank.toString()");
//存钱
bank.saveMoney("200901", 888);
System.out.println("给账号200901打入900");
System.out.println(bank.getCountInfo("200901"));
bank.transferMoney("200901", "200902", 200);
System.out.println("从账号200901转200到账号200902");
System.out.println(bank.toString());
}}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货