Java基礎 第二節 第十三課

      網友投稿 663 2025-03-31

      繼承的綜合案例


      綜合案例

      案例分析

      案例實現

      定義用戶類

      定義群主類

      定義成員類

      定義測試類

      綜合案例

      群主法普通紅包. 某群有多名成員, 群主給成員發普通紅包. 普通紅包規則:

      群主的一筆金額, 從群主余額中扣除, 平均分成 n 等分, 讓成員領取

      成員領取紅包后, 保存到成員金額中

      請根據描述, 完成案例中所有類的定義以及指定類之間的繼承關系, 并完成發紅包的操作.

      案例分析

      根據描述分析, 得出如下繼承體系:

      案例實現

      定義用戶類

      public class User { // 成員變量 private String username; // 用戶名 private double leftMoney; // 余額 // 構造方法 // 無參構造 public User(){ } public User(String username, double leftMoney){ this.username = username; this.leftMoney = leftMoney; } // get/set方法 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public double getLeftMoney() { return leftMoney; } public void setLeftMoney(double leftMoney) { this.leftMoney = leftMoney; } // 展示信息的方法 public void show(){ System.out.println("用戶名: " + username + ", 余額為: " + leftMoney + "元"); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      定義群主類

      import java.util.ArrayList; public class Admin extends User { // 構造方法 // 無參構造 public Admin(){ } // 有參構造 public Admin(String username, double leftMoney){ // 通過super調用父類構造方法 super(username, leftMoney); } public ArrayList send(int money, int count){ // 獲取群主余額 double leftMoney = getLeftMoney(); if (money > leftMoney){ return null; } // 修改群主余額 setLeftMoney(leftMoney - money); // 創建一個集合, 保存等分金額 ArrayList arrayList = new ArrayList<>(); // 擴大100倍, 相當于拆算成 "分" 為單位, 避免小數運算損失精度的問題 money = money * 100; // 每份的金額 int serving = money / count; // 不能被整除的余數 int leftover = money % count; // 無論是否整除, n-1份, 都是每份的等額金額 for (int i = 0; i < count - 1; i++) { // 縮小100倍嗎折算成 "元" arrayList.add(serving / 100.00); } // 最后一份金額 arrayList.add((serving + leftover) / 100.00); // 返回集合 return arrayList; } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      定義成員類

      import java.util.ArrayList; import java.util.Random; public class Member extends User { public Member() { } public Member(String username, double leftMoney) { super(username, leftMoney); } // 打開紅包, 就是從集合中, 隨機取出一份, 保存到自己的余額中 public void openRedPackage(ArrayList arrayList){ // 創建Random對象 Random r = new Random(); // 隨機生成一個角標 int index = r.nextInt(arrayList.size()); // 移除一個金額 Double money = arrayList.remove(index); // 直接調用父類方法,設置到余額 setLeftMoney(money); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      定義測試類

      import java.util.ArrayList; import java.util.Scanner; public class Test { public static void main(String[] args) { // 創建一個群主對象 Admin admin = new Admin("群主",200); // 創建一個鍵盤錄入 Scanner sc = new Scanner(System.in); System.out.println("請輸入金額:"); int money = sc.nextInt(); System.out.println("請輸入個數:"); int count = sc.nextInt(); // 發送紅包 ArrayList sendList = admin.send(money,count); // 判斷,如果余額不足 if(sendList == null){ System.out.println(" 余額不足..."); return; } // 創建三個成員 Member m1 = new Member(); Member m2 = new Member(); Member m3 = new Member(); // 打開紅包 m1.openRedPackage(sendList); m2.openRedPackage(sendList); m3.openRedPackage(sendList); // 退還余額 double left = 0; for (Double aDouble : sendList) { left += aDouble; } admin.setLeftMoney(admin.getLeftMoney() + left); // 展示信息 admin.show(); m1.show(); m2.show(); m3.show(); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      Java基礎 第二節 第十三課

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:WPS演示選擇本機內置模板來新建文稿的妙招
      下一篇:為什么表格插入的超鏈接提示無法打開指定文件夾?(excel表格超鏈接無法打開)
      相關文章
      亚洲情XO亚洲色XO无码| 欧美日韩亚洲精品| 亚洲爆乳成av人在线视菜奈实| 亚洲av伊人久久综合密臀性色 | 亚洲熟妇色自偷自拍另类| 久久精品视频亚洲| 亚洲无线码在线一区观看| 国产专区一va亚洲v天堂| 国产中文在线亚洲精品官网| 激情97综合亚洲色婷婷五| 亚洲女同成人AⅤ人片在线观看| 在线观看亚洲专区| 亚洲国产中文v高清在线观看| 亚洲国产成人影院播放| 国产AV日韩A∨亚洲AV电影| 国产偷国产偷亚洲高清在线| 亚洲国产高清在线一区二区三区| 国产精品亚洲片在线花蝴蝶| 国产产在线精品亚洲AAVV| 亚洲电影日韩精品| 国产精品亚洲视频| 中文字幕亚洲无线码| 亚洲国产精品嫩草影院在线观看 | 亚洲乱色伦图片区小说| 亚洲AV无码成人精品区日韩| 激情小说亚洲图片| 亚洲片国产一区一级在线观看 | 在线观看日本亚洲一区| 亚洲色偷偷偷综合网| 国产精品亚洲综合一区在线观看| 亚洲国产专区一区| 狠狠色伊人亚洲综合成人| 亚洲国产精品久久久久| 亚洲手机中文字幕| 亚洲一区AV无码少妇电影| 国产精品亚洲五月天高清| 国产亚洲精品激情都市| 亚洲国产精品嫩草影院在线观看 | 亚洲国产精品国产自在在线| 亚洲中文字幕丝袜制服一区| 国产亚洲无线码一区二区|