如何使用Math和Arrays来完成摇奖机的功能

这篇博客通过一个摇奖机的实现,展示了如何利用Java的Math和Arrays类来完成功能。首先介绍了问题背景,即需要创建学生类和抽奖方法类。接着详细解释了步骤,包括学生类的创建,抽奖方法的实现,以及如何确保已中奖的学生不再重复中奖。最后总结了通过这种方式成功实现了摇奖机的功能。
摘要由CSDN通过智能技术生成

如何使用Math和Arrays来完成摇奖机的功能

用一个题目来演示这个方法,要求如下
题目:
	讲一些学生对象加入到Arrays中(从控制台输入学生信息)
输入标题:
  •   ==========双十一大抽奖===========
    
  •   ========= 添加抽奖血学生=========
    
  •   ============开始抽奖===========
    
效果(1):
  • 输入学生信息,添加学生
  • 输入end 完成添加
效果(2):
  • 开始抽奖,对于被抽取的学生提示:公恭喜中奖.,作业题道!
  • 已经中过奖的学生从集合中remove
  • 输入"back"可以返回上一级菜单
  • 学生信息: 学号 ,姓名, 年龄,专业
解:根据题目的表述意思,我们需要创建两个类,一个学生类,一个抽奖(方法)类,在学生类里我们将需要使用的的学生信息写在类里,然后将需要使用的方法放在抽奖类里面,所以:
第一步(创建学生类):
public class Student {

	private int sno;
	private String sname;
	private String sex;

	public Student() {
		// TODO Auto-generated constructor stub
	}

	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())) {
			// todo 上一级菜单
			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());
//			System.out.println("中奖学生: " + 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);
		//创建JLable
		JLabel txt = new JLabel(name);
		txt.setFont(new Font("楷体",Font.BOLD,30));
		txt.setForeground(Color.red);
		
		//将JLable加入到窗体中
		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的利用并用来完成摇奖机的功能实现.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值