11章 编程练习题 11.8

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11章 编程练习题 11.8相关的知识,希望对你有一定的参考价值。

兴趣使然,最近开始自学java,之前的题做了就删,怪可惜的。

自己一个人闷头写代码也不好,今天开始就把做好的题都贴出来求鞭策吧!

要求:

一个Account类储存账户

一个Transaction类储存交易信息

利用ArrayList储存每一条交易信息

最后输出账户清单,显示账户名字、利率、余额和所有交易。

总结:

要注意保存每次交易后的余额balance,调用类方法时该类是否要转换。

代码写完感觉自己的算法逻辑还不够好,经常需要转一次弯的地方自己要转几次弯才到。

搞定一道题,经验值又UP了www

 

 1 package test.com;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Test {
 6 
 7     public static void main(String[] args) {
 8         
 9         
10         Scanner input=new Scanner(System.in);
11         
12         System.out.println("请依次输入账户名,账户ID,账户余额,年利率");
13         String name=input.next();
14         int id=input.nextInt();
15         double balance=input.nextDouble();
16         double rate=input.nextDouble();
17         Account test = new Account(name, id, balance, rate);
18         while(true){
19             System.out.println("输入w取钱,d存钱,其他退出并显示信息:");
20             String step1=input.next();
21             
22             if(step1.equals("w")){
23                 System.out.println("请输入数额:");
24                 double amount=input.nextDouble();
25                 test.setWithdraw(amount);
26                 
27                 continue;
28             }
29             if(step1.equals("d")){
30                 System.out.println("请输入数额:");
31                 double amount=input.nextDouble();
32                 test.setDeposit(amount);
33                 
34                 continue;
35             }else{
36                 System.out.println("账户名:"+name+"\t年利率:"+rate+"%\n");
37                 test.message();
38                 break;
39             }
40         
41         }
42         
43     }
44 
45 }
  1 package test.com;
  2 
  3 import java.text.SimpleDateFormat;
  4 import java.util.ArrayList;
  5 import java.util.Date;
  6 import java.util.Scanner;
  7 
  8 public class Account {
  9     private int id=0;//用户ID
 10     private double balance=100;//收支
 11     private double annualInterestRate=0;//年利率
 12     private Date dateCreated;//开户日期
 13     private double withdraw=0;//取款
 14     private double deposit=0;//存款
 15     private String name;
 16     
 17     Scanner input = new Scanner(System.in);
 18     
 19     public Account(){
 20         
 21     }
 22     
 23     
 24     public Account(int num){
 25         
 26     }
 27     
 28     public Account(String name,int id,double balance,double annualInterestRate){
 29             this.setName(name);
 30             this.setId(id);
 31             this.setBalance(balance);
 32             this.setAnnualInterestRate(annualInterestRate);
 33         }
 34     
 35     //创建ArrayList储存含有交易信息的对象
 36     ArrayList transactions=new ArrayList();
 37     //打印所有存取款信息
 38     public void message(){
 39         for(int i=0;i<transactions.size();i++){
 40             ((Transaction)transactions.get(i)).message();
 41             }
 42     }
 43     
 44     
 45     
 46     //显示日期
 47     public  Date getDateCreated(){
 48         this.dateCreated=new Date();
 49         SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd ‘at‘ hh:mm:ss a zzz");
 50         System.out.println("Current Date: " + ft.format(dateCreated));
 51         return null;    
 52     }
 53 
 54     
 55 //get set 方法
 56     public double getBalance() {
 57         return balance;
 58     }
 59 
 60     public void setBalance(double num) {
 61         this.balance=num;
 62     }
 63 
 64     public double getWithdraw() {
 65         return withdraw ;
 66     }
 67 
 68     public void setWithdraw(double num) {
 69         Transaction test=new Transaction(‘w‘, num, this.getBalance());
 70         this.setBalance(test.getBalance());
 71         transactions.add(test);
 72         
 73     }
 74 
 75     public double getDeposit() {
 76         return deposit;
 77     }
 78 
 79     public void setDeposit(double num) {
 80         Transaction test=new Transaction(‘d‘, num, this.getBalance());
 81         this.setBalance(test.getBalance());
 82         transactions.add(test);
 83         
 84     }
 85 
 86     public int getId() {
 87         return id;
 88     }
 89 
 90     public void setId(int id) {
 91         this.id = id;
 92     }
 93 
 94     public double getAnnualInterestRate() {
 95         return annualInterestRate;
 96     }
 97 
 98     public void setAnnualInterestRate(double annualInterestRate) {
 99         this.annualInterestRate = annualInterestRate;
100     }
101 
102 
103     public String getName() {
104         return name;
105     }
106 
107 
108     public void setName(String name) {
109         this.name = name;
110     }
111     
112     
113 }
 1 package test.com;
 2 
 3 public class Transaction {
 4     private char type;//交易类型 w取钱d存钱
 5     private double amount=0;//交易的数额
 6     private double balance=0;//余额
 7     
 8     public Transaction(char type,double amount,double balance){
 9         this.setType(type);
10         this.setAmount(amount);
11         this.setBalance(balance);
12         
13     }
14     //每次存取款的信息
15     public void message(){
16         Account date=new Account();
17         date.getDateCreated();
18         if(this.type==‘w‘){
19             System.out.println("取款额为:"+this.getAmount());
20             System.out.println("账户余额为:"+this.getBalance()+"\n");
21         }
22         if(this.type==‘d‘){
23             System.out.println("存款额为:"+this.getAmount());
24             System.out.println("账户余额为:"+this.getBalance()+"\n");
25         }
26         
27         
28     }
29 //get set 
30     public char getType() {
31         return type;
32     }
33 
34     public void setType(char type) {
35         this.type = type;
36     }
37 
38     public double getAmount() {
39         return amount;
40     }
41 
42     public void setAmount(double amount) {
43         this.amount = amount;
44     }
45 
46     public double getBalance() {
47         return balance;
48     }
49 
50     public void setBalance(double balance) {
51         if(this.type==‘w‘){
52             this.balance = balance-amount;
53         }
54         if(this.type==‘d‘){
55             this.balance += balance+amount;
56         }
57     }
58     
59     
60 }

 

以上是关于11章 编程练习题 11.8的主要内容,如果未能解决你的问题,请参考以下文章

java编程思想第11章练习16

安卓权威编程指南 挑战练习(第26章 在 Lollipop 设备上使用 JobService)

python核心编程第五章练习-5.11-最大公约数和最小公倍数

编程珠玑第一章习题

Python核心编程(第二版)第六章部分习题代码

C Primer plus 第一章复习题及其编程题