JAVA编程(随机点名程序),高手来!急!

JAVA编程(随机点名程序),高手来!急!,第1张

按照你第2点描述,你仅仅是想实现随即顺序点名而已,并不是随即点名。

我给你个解决方案:

在每次点中一名学生后,将java0803_students.txt文件中做个标示,表示该学生已经在本轮点名中被点过。

直到所有学生都点到后情况这个表示,准备下一轮点名做标记。

下面我给你一段伪代码,包含了 random 的使用方法:

public class CallStudents(){

private static Random random = new Random()

public void call(){

// 重新设置学生被圆塌咐点名的标示(根据点名情况)

reset()

long value = -1

while (true) {

value = random.nextInt(maxValue + 1)// maxValue 是你当前有学生的最大数目

//在这里读取当前随即号对应的学生记录

String student = getStudentByID(value)

//判断该学生是否被点过名

if(!checkCalled(student)){

// 设置已经点过名

setCalled(student)

// 在控制台上显示被点名的学生信息

system.out.println(student)

// 结束循环

break

}

}

}

private String getStudentByID(long id){

// 这个是读取文件,需橘纯要你自己实现的

// 返回 java0803_students.txt 文件中对应的学生记录

}

private boolean checkCalled(String student){

// 至于是什么样的规则,有你自己定义

// 我这里给你举个例子

// 如果这条学生记录中包含 一个字符为 called 的话,表明这名学生被点过名

if(student.indexOf("called") != -1){

retrn true

}

return false

}

private void setCalled(String student){

// 至于是什么样的规则,有你自己定义

// 我这里给你举个例子

// 设置学生已被点名

student += "_called"

// 将这个值重新写回到你的java0803_students.txt 文件中,覆盖愿信息!

}

private void reset(){

// 判断是否所有学生都被点过名,如果点过名,清空所有学生被点名的标记

// 这个实现有你自己定义,

// 这里我给你举个例子

// 读取文件,判断每一个学衫配生信息是否都标有 called

// 如果都有,执行删除所有 called 的 *** 作,并保存文件。

// 如果只有部分没有,则表明本轮点名没有结束,不做任何 *** 作。

}

public static void main(String[] args){

String con = // 接受控制台信息

if(con.equals("y")){

CallStudents call = new CallStudents()

call.call()

}

if(con.equals("n")){

// 结束程序

}

}

}

import java.awt.Font

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.util.ArrayList

import java.util.List

import java.util.Random

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JOptionPane

public class test_random extends JFrame implements ActionListener{

public static void main(String[] args) {

test_random t = new test_random()

t.init()

}

public void init(){

initListDate()

but = new JButton("开始点名")

but.setBounds(100,150,100,40)

but.addActionListener(this)

label = new JLabel("随机点名")

label.setBounds(60,20,300,40)

label.setFont(new Font("楷体",Font.BOLD,40))

show = new JLabel("")

show.setBounds(110,80,200,30)

show.setFont(new Font("楷体",Font.BOLD,30))

reset = new JButton("重新点名")

reset.setBounds(203,246,90,25)

reset.addActionListener(this)

add(but)

add(label)

add(show)

add(reset)

setLayout(null)

setVisible(true)

setResizable(false)

setBounds(100,100,300,300)

setTitle("点名")

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

public void initListDate(){

//巧银在这个地方添加姓名就可以了

list.add("刘天廷")

list.add("孔老二")

list.add("张三")

list.add("李四")

list.add("王悄指五")

list.add("麻六")

list.add("冯七孝运宴")

list.add("京八")

list.add("茅台九")

}

public void actionPerformed(ActionEvent e) {

/*确保每人选一次*/

Object obj = e.getSource()

if(obj == but){

if(list.size()==0){

JOptionPane.showMessageDialog(null,"没有人了!")

return

}else{

Random ran = new Random()

int num = ran.nextInt(list.size())

show.setText(list.get(num))

list.remove(num)

}

}

if(obj == reset){

show.setText("")

initListDate()

}

}

private JButton but

private JLabel label

private JLabel show

private JButton reset

private List<String>list = new ArrayList<String>()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12536235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存