Java基礎-day07-程式碼題-自定義資料型別;ArrayList集合
阿新 • • 發佈:2022-05-04
1.飯店結賬程式. 定義菜品類,屬性為名稱,價格,數量. 集合中新增若干菜品物件. 遍歷集合,打印出集合中所有菜品名稱和消費總金額.
程式碼實現:
package StudentJavaSEday07; class Cai { private String name; private double price; private int num = 1; // 數量,預設一份. public Cai(String name, double price, int num) { super(); this.name = name; this.price = price; this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } } package StudentJavaSEday07; import java.util.ArrayList; public class Test1 { public static void main(String[] args) { ArrayList<Cai> al = new ArrayList<>(); Cai cai = new Cai("烤羊腿", 58, 4); Cai cai2 = new Cai("皮蛋豆腐", 8, 1); Cai cai3 = new Cai("烤板筋", 2, 10); Cai cai4 = new Cai("可樂", 8, 1); al.add(cai); al.add(cai2); al.add(cai3); al.add(cai4); double total = 0; // 遍歷 集合 for (Cai c : al) { // 列印 String name = c.getName(); int num = c.getNum(); System.out.println("菜名 :" + name + " -- " + num + "份"); // 計算 總價 // 獲取 每一個 菜的單價 . 單價 * 份數 total += c.getPrice() * num; } System.out.println("總價:" + total); } }
執行結果:
2.雙色球 彩票機選程式.
雙色球規則 : 一共 選 7 個號. 6個紅色 , 1 藍色的
紅色球1-33中選6個,號碼不能重複. 藍色球16選1,號碼不能重複.
紅色 1- 33
藍色 1- 16
打印出機選結果格式(前6個為紅球,最後一個為籃球,數字是隨機生成的,每次執行結果都不一樣) :
本期中獎號碼為:[7, 27, 25, 6, 4, 9, 12]
程式碼實現:
package StudentJavaSEday07; import java.util.ArrayList; import java.util.Random; public class Demo4 { public static void main(String[] args) { // 1.定義集合, 儲存 最終結果 . ArrayList<Integer> result = new ArrayList<>(); // 2.開始選擇 . Random random = new Random(); // 隨機生成 數字. // 3.生成6個紅球並儲存到集合中 while (result.size() < 6) { int red_ball = random.nextInt(33) + 1; // 保證唯一 if (!result.contains(red_ball)) { result.add(red_ball); } } // 4、再生成 1個藍色 的球 ,並新增到集合中 int blue_ball = random.nextInt(16) + 1;// 藍色球 result.add(blue_ball); // 5、列印結果 System.out.println("本期中獎號碼為:" + result); } }
執行結果:
3.編寫一個程式的模擬班級學生的成績庫, 包含多項成績,英語,數學,Java.
實現如下功能:
1.可以修改某個學生的某項分數.
2.可以列印全班同學成績
要求使用集合來完成.
程式碼實現:
package StudentJavaSEday07; class Student { private double english; private double math; private double java; private String name; public Student() { super(); } public Student(String name, double english, double math, double java) { super(); this.english = english; this.math = math; this.java = java; this.name = name; } public double getEnglish() { return english; } public void setEnglish(double english) { this.english = english; } public double getMath() { return math; } public void setMath(double math) { this.math = math; } public double getJava() { return java; } public void setJava(double java) { this.java = java; } public String getName() { return name; } public void setName(String name) { this.name = name; } } package StudentJavaSEday07; import java.util.ArrayList; import java.util.Scanner; public class Test2 { public static void main(String[] args) { ArrayList<Student> student_list = new ArrayList<>(); student_list.add(new Student("張三", 99, 90, 100)); student_list.add(new Student("李四", 89, 80, 100)); for (Student student : student_list) { System.out.println(student); } Scanner scanner = new Scanner(System.in); // 請輸入學生姓名 System.out.println("請輸入學生姓名 "); String name = scanner.nextLine(); for (Student student : student_list) { String n = student.getName(); if (n.equals(name)) { // 可以繼續錄入, 修改 System.out.println("請輸入科目 "); String kemu = scanner.nextLine(); System.out.println("請輸入分數 "); double score = scanner.nextDouble(); // 根據不同的科目,修改不同的分數. switch (kemu) { case "數學": student.setMath(score); break; case "英語": student.setEnglish(score); break; case "java": student.setJava(score); break; default: System.out.println("查無此課, 對不起"); return ; } System.out.println("恭喜您, 修改成功"); System.out.println(student); return; } } System.out.println("對不起 ,查無此人"); } }
執行結果:
4.隨機點名器
a) 案例回顧
在全班同學中隨機的打印出一名同學名字。
共三個步驟:
1.儲存全班同學名字
2.列印全班同學每一個人的名字
3.在班級總人數範圍內,隨機產生一個隨機數索引,查詢該隨機數索引所對應的同學名字
b) 重構內容分析
1:將原來的陣列容器修改為集合容器
2:將原來的人名字串修改為使用人類物件
c) 實現步驟
定義Person類
定義Person類,包含成員變數名稱、年齡、地址
儲存所有同學姓名
在main方法中ArrayList集合型別的變數並建立物件為變數賦值,再向集合中新增5個Person物件。
總覽全班同學姓名
遍歷集合,依次獲取每個Person物件,再獲取Person物件名稱列印。
隨機點名
通過隨機數類Random產生一個從0到集合長度的隨機索引。而該索引對應的Person物件的名稱屬性便是所求的隨機姓名。
程式碼實現:
package StudentJavaSEday07;
/*
自定義型別 人類
屬性
姓名 String
年齡 int
性別 String
身高 double
是否熱愛java boolean
*/
public class Person {
//姓名
String name;
//年齡
int age;
//性別
String sex;
//身高
double height;
//是否喜歡java
boolean isLoveJava;
}
package StudentJavaSEday07;
//匯入集合ArrayList
import java.util.ArrayList;
//匯入Random
import java.util.Random;
public class RandomName
{
public static void main(String[] args)
{
//定義一個集合用來儲存所有人
ArrayList<Person> list = new ArrayList<Person>();
//向集合中新增人 建立Person物件 將Person新增到集合中
Person p = new Person();
p.name = "柳巖";
Person p2 = new Person();
p2.name = "唐嫣";
Person p3 = new Person();
p3.name = "金蓮";
list.add(p);
list.add(p2);
list.add(p3);
System.out.println("-----------------------");
//遍歷集合,依次獲取每個人,列印每個人的名字
for(int i = 0 ;i < list.size();i++){
Person thisP = list.get(i);
System.out.println(thisP.name);
}
System.out.println("-----------------------");
//隨機點名
Random r = new Random();
//生成一個最大不超過集合最大索引的隨機數 0 - 集合最大索引的一個隨機數
int randomIndex = r.nextInt(list.size());
//依據隨機數得到集合中相對應的人
Person person = list.get(randomIndex);
System.out.println("今天你答題:"+person.name);
}
}
執行結果: