分享

Java基础-day07-代码题-自定义数据类型&ArrayList集合

 Java帮帮 2020-01-02
Java基础-day07-代码题-自定义数据类型&ArrayList集合
●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★

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);

}

}

运行结果:

我们是最靠谱的IT专家

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多