题目:
- 使用Math和ArrayList完成一个摇奖机的功能:
-
- 将一些学生对象加入到ArrayList中(从控制台输入学生信息)
-
- 输入2抽象
- ----------------------双11大抽奖--------------------
- ------------------1.添加抽奖学生-------------------
---------------------2.开始抽奖---------------------- -
输入1:
-
输入学生信息,添加学生
-
输入" end" 完成添加
-
输入2:
-
开始抽奖,对于被抽取到的学生提示:恭喜中奖,作业题10道!
-
已经中过奖的学生从集合中移除 remove
-
输入“back”可以返回上一级菜单
实现:
- Student类
public class Student {
private int sno;
private String name;
private String sex;
public Student(int sno, String name, String sex) {
super();
this.sno = sno;
this.name = name;
this.sex = sex;
}
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student [sno=" + sno + ", name=" + name + ", sex=" + sex + "]";
}
}
Extruct类
import java.awt.Color;
import java.awt.Font;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Extruct {
static ArrayList<Student> list = new ArrayList<>();
private JFrame j;
public void addStu() {
System.out.println("请输入学生信息(例如:1001/softeem/男)");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String[] info = str.split("/");
// 判断输入的内容是否包含三项信息
if (info.length != 3) {
System.out.println("信息输入有误,请重新输入");
addStu();
return;
}
Student s = new Student(Integer.parseInt(info[0]), info[1], info[2]);
// 将对象加入集合
list.add(s);
System.out.println("输入end返回上一级菜单!输入其他继续添加");
if ("end".equals(sc.nextLine())) {
menu();
} else {
addStu();
}
}
// 抽奖
public void ext() {
if (j != null) {
j.setVisible(false);
}
// 从学生集合中随机一个索引
int index = (int) (list.size() * Math.random());
Student stu = list.get(index);
System.out.println("中将学生" + stu.getName());
showDialog(stu.getName());
list.remove(index);
// 返回上一级
menu();
}
public void menu() {
System.out.println("=================双十一抽奖====================");
System.out.println("================【1】添加抽奖学生信息=================");
System.out.println("================【2】抽奖==========================");
System.out.println("================【0】退出==========================");
System.out.println("================================================");
Scanner sc = new Scanner(System.in);
String i = sc.next();
switch (i) {
case "1":
addStu();
break;
case "2":
ext();
break;
case "0":
System.out.println("谢谢使用,再见!");
System.exit(0);
break;
default:
System.out.println("请重新输入");
menu();
}
}
public void showDialog(String name) {
j = new JFrame("中奖人");// 创建窗体
j.setSize(500, 600);// 设置窗口大小
j.setLocationRelativeTo(null);// 设置居中显示
j.setAlwaysOnTop(true);
j.setResizable(false);// 禁止改变窗口大小
JLabel txt = new JLabel(name);// 创建JLabel
txt.setForeground(Color.GREEN);
txt.setFont(new Font("楷体", Font.BOLD, 50));
// 将JLabel加入到窗体中显示
j.add(txt);
// 显示窗体
j.setVisible(true);
}
public static void main(String[] args) {
new Extruct().menu();
}
}
测试: