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);
}
}
运行结果: