如何使用Math和Arrays来完成摇奖机的功能
用一个题目来演示这个方法,要求如下
题目:
讲一些学生对象加入到Arrays中(从控制台输入学生信息)
输入标题:
-
==========双十一大抽奖===========
-
========= 添加抽奖血学生=========
-
============开始抽奖===========
效果(1):
效果(2):
- 开始抽奖,对于被抽取的学生提示:公恭喜中奖.,作业题道!
- 已经中过奖的学生从集合中remove
- 输入"back"可以返回上一级菜单
- 学生信息: 学号 ,姓名, 年龄,专业
解:根据题目的表述意思,我们需要创建两个类,一个学生类,一个抽奖(方法)类,在学生类里我们将需要使用的的学生信息写在类里,然后将需要使用的方法放在抽奖类里面,所以:
第一步(创建学生类):
public class Student {
private int sno;
private String sname;
private String sex;
public Student() {
}
public Student(int sno, String sname, String sex) {
super();
this.sno = sno;
this.sname = sname;
this.sex = sex;
}
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student [sno=" + sno + ", sname=" + sname + ", sex=" + sex + "]";
}
}
学生类创建完毕,再创建方法类来调用这些学生信息:
第二步(方法调用和使用输出):
package com.softeem.lesson13.DaFuWen;
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<Student>();
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);}
if (list.size() > 0) {
int index = (int) (list.size() * Math.random());
Student stu = list.get(index);
showDialog("中奖人: "+stu.getSname());
list.remove(index);
menu();
} else {
System.out.println("请继续添加抽奖人: ");
addStu();
}
}
public void showDialog(String name) {
j = new JFrame("中奖人");
j.setSize(300,200);
j.setLocationRelativeTo(null);
j.setResizable(false);
JLabel txt = new JLabel(name);
txt.setFont(new Font("楷体",Font.BOLD,30));
txt.setForeground(Color.red);
j.add(txt);
j.setVisible(true);
}
public void menu() {
System.out.println("==================SOFTEEM 双十一大抽奖=======================");
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 static void main(String[] args) {
new Extruct().menu();
}
}
结 : 这样就完成了对Math和Arrays的利用并用来完成摇奖机的功能实现.