第四周課程總結&試驗報告(二)

實驗二 Java簡單類與對象java

1.寫一個名爲Rectangle的類表示矩形。其屬性包括寬width、高height和顏色color,width和height都是double型的,
而color則是String類型的。要求該類具備:
(1) 使用構造函數完成各屬性的初始賦值框架

(2) 使用get…()和set…()的形式完成屬性的訪問及修改函數

(3) 提供計算面積的getArea()方法和計算周長的getLength()方法優化

 1 package java實驗報告二;  2 
 3 class Rectangle{  4     private double width,height;    //聲明屬性
 5     private String color;           //聲明屬性
 6     public Rectangle(String color,double width,double height){     //定義構造方法爲各屬性賦值
 7         this.setColor(color);                                       //爲屬性賦值
 8         this.setWidth(width);  9         this.setHeight(height); 10  } 11     public void getArea(){                                     //計算面積的方法
12         System.out.println("面積:"+getWidth()*getHeight()); 13  } 14     public void getLength(){                                   //計算周長的方法
15         System.out.println("周長:"+2*(getWidth()+getHeight())); 16  } 17     public void getColor1(){                                    //定義顏色方法
18         System.out.println("顏色:"+getColor()); 19  } 20     public String getColor(){             //取得color
21         return color; 22  } 23     public void setColor(String n){       //設置color
24         color=n; 25  } 26     public double getWidth(){             //取得width
27         return width; 28  } 29     public void setWidth(double w){       //設置width
30         width=w; 31  } 32     public double getHeight(){            //取得height
33         return height; 34  } 35     public void setHeight(double h){      //設置height
36         height=h; 37  } 38 } 39 public class classdemo2 { 40 
41     public static void main(String[] args) { 42         Rectangle re=new Rectangle("yellow",15.01,22.22); 43         re.getArea();         //調用Rectangle類的方法
44  re.getLength(); 45  re.getColor1(); 46  } 47 }

 

 

實驗過程:這道題很簡單,理解了類與對象的關係,就以爲很簡單,基本操做。ui

2.銀行的帳戶記錄Account有帳戶的惟一性標識(11個長度的字符和數字的組合),用戶的姓名,開戶日期,
帳戶密碼(六位的數字,能夠用0開頭),當前的餘額。銀行規定新開一個帳戶時,銀行方面提供一個標
識符、帳戶初始密碼123456,客戶提供姓名,開戶時客戶能夠直接存入一筆初始帳戶金額,不提供時初始
餘額爲0。定義該類,並要求該類提供以下方法:存款、取款、變動密碼、能夠分別查詢帳戶的標識、姓名、
開戶日期、當前餘額等信息。this

 1 package java實驗報告二;  2 
 3 import java.text.DecimalFormat;  4 import java.util.Scanner;  5 
 6 class Account{  7     private String id,name;                              //聲明屬性
 8     private int time,key;  9     private double balance;  10     public Account(String id,String name,int time,int key,int balance){     //定義構造方法爲各屬性賦值
 11         this.setId(id);                                       //爲屬性賦值
 12         this.setName(name);  13         this.setTime(time);  14         this.setKey(key);  15         this.setBalance(balance);  16  }  17     public void deposit(){              //存取款方法
 18         System.out.println("1.存款 2.取款");  19         System.out.print("再次輸入你要進行的操做的序號:");  20         DecimalFormat df=new DecimalFormat("0.00");           //控制餘額輸出精度
 21         Scanner sc=new Scanner(System.in);  22         int a1=sc.nextInt();  23         if(a1==1){  24             System.out.println("當前餘額:"+df.format(+getBalance())+"元");  25             System.out.print("請輸入要存入的錢數:");  26             double money1=sc.nextDouble();  27             setBalance(getBalance()+money1);       //把輸入的錢數賦值給getBalance
 28             System.out.println("成功!當前餘額:"+df.format(+getBalance())+"元");  29  }  30         else if(a1==2){  31             System.out.println("當前餘額:"+df.format(+getBalance())+"元");  32             System.out.print("請輸入要取出的錢數:");  33             double money2=sc.nextDouble();  34             setBalance(getBalance()-money2);  35             if(getBalance()<0){  36                 System.out.println("餘額不足!");  37  }  38             else{  39                 System.out.println("成功!當前餘額:"+df.format(+getBalance())+"元");  40  }  41  }  42         
 43  }  44     public void change(){               //更改密碼方法
 45         System.out.print("請設置新密碼:");  46         Scanner sc=new Scanner(System.in);  47         int key1=sc.nextInt();  48         System.out.print("請再次確認密碼:");  49         int key2=sc.nextInt();  50         if(key1==key2){  51             setKey(key1);             //把新設置的密碼值賦給getKey()
 52             System.out.println("設置成功!你的密碼爲:"+getKey());  53  }  54         else{  55             System.out.println("兩次輸入的密碼不一樣!");  56  }  57         
 58  }  59     public void inquire(){              //查詢信息方法
 60         System.out.print("輸入六位數密碼查詢信息:");  61         Scanner sc=new Scanner(System.in);  62         int data=sc.nextInt();  63         if(data==getKey()){  64         DecimalFormat df=new DecimalFormat("0.00");      //控制餘額輸出精度
 65         System.out.println("標識:"+getId());  66         System.out.println("姓名:"+getName());  67         System.out.println("開戶日期:"+getTime());  68         System.out.println("餘額:"+df.format(+getBalance())+"元");  69  }  70         else{  71             System.out.println("密碼錯誤");  72  }  73  }  74     public String getId(){  75         return id;  76  }  77     public void setId(String i){  78         id=i;  79  }  80     public String getName(){  81         return name;  82  }  83     public void setName(String n){  84         name=n;  85  }  86     public int getTime(){  87         return time;  88  }  89     public void setTime(int t){  90         time=t;  91  }  92     public int getKey(){  93         return key;  94  }  95     public void setKey(int k){  96         key=k;  97  }  98     public double getBalance(){  99         return balance; 100  } 101     public void setBalance(double b){ 102         balance=b; 103  } 104 } 105 public class classdemo3 { 106 
107     public static void main(String[] args) { 108         boolean R=false; 109         Account ac=new Account("yanzi404123","張晏子",20190917,123456,0); 110         while(!R) 111  { 112         System.out.println("1.存取款"); 113         System.out.println("2.修改密碼"); 114         System.out.println("3.查詢信息"); 115         System.out.println("4.退出程序"); 116         System.out.print("請輸入你要進行的操做的序號:"); 117         Scanner sc=new Scanner(System.in); 118         int a=sc.nextInt(); 119         if(a==1){ 120             ac.deposit();    //存取款
121  } 122         else if(a==2){ 123             ac.change();     //修改密碼
124             
125  } 126         else if(a==3){ 127             ac.inquire();       //信息查詢
128  } 129         else if(a==4){ 130             System.out.println(" 感謝使用!"); 131             break; 132  } 133  } 134  } 135 }

       

       

 

 

作這道題花的時間比較多,大概3個小時,首先跟第一題同樣,先作個框架。我提供了3個方法:存取款、修改密碼、查詢信息。
最早遇到的問題是,人民幣餘額得保留小數點後兩位,而我直接經過get輸出它的時候,默認保留的是後一位即0.0,而後仿造C
的方法失敗,最後找了個b站教程知道了DecimalFormat的用法,一般經過這樣一句話DecimalFormat df=new DecimalFormat("0.00");
來設置保留幾位小數。
       第二個問題是寫修改密碼的代碼時,由於我設置了要輸入兩次密碼,因此須要把新密碼int key1值賦值給getKey();很明顯 getKey()=key1;
是錯誤的,在網上也搜不到辦法,而後我亂寫了半個小時,各類排列組合方法都試過了,最後套出了setKey(key1); 這個辦法,徹底ok。
還有由於使用while循環沒有設置break,致使陷入了死循環,下次注意。還有此程序是beta版 還有不少小細節沒有完善,好比密碼暫時spa

還不能以0開始,標識也不是隨機生成,也沒有優化程序。以後再改吧我先提交。code

相關文章
相關標籤/搜索