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.GridLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.util.ArrayList

import java.util.Arrays

import java.util.List

import java.util.Scanner

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JTextField

public class test {

static String[] arr

static boolean flag=true

static List<String>a

static JTextField jtf

public static void main(String[] args) {

// TODO Auto-generated method stub

JFrame frame=new JFrame()

frame.setLayout(new GridLayout(1,2))

JButton button = new JButton("抽奖")

jtf = new JTextField()

frame.add(jtf)

frame.add(button)

a = new ArrayList<String>()

arr = new String[]{"张三","李四","王五"}

button.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

int i=0

fond:

while(true){

String str = arr[(int)(Math.random()*arr.length)]

for(String b:a){

if(b.equals(str)){

if(i>=arr.length){

jtf.setText("没有人了")

break fond

}

continue fond

}

i++

}

a.add(str)

jtf.setText(str)

break

}

}

})

frame.setSize(500, 500)

frame.setLocation(500, 500)

frame.setVisible(true)

}

}

随机函数那里肢喊携有问题了 ,修改如下

import java.awt.Button

import java.awt.Toolkit

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.util.ArrayList

import java.util.List

import javax.swing.*

public class Window extends JFrame {

List<历伏String>names = new ArrayList<String>()

Button but = new Button("随即点名")

JTextField jtf = new JTextField(15)

JLabel jl = new JLabel("姓名为:")

public Window(){

this.init()

this.addComponent()

this.addListener()

}

private void addListener() {

but.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

jtf.setText(names.get((int) (Math.random()*names.size())))

}

})

}

private void addComponent() {

JPanel p = new JPanel()

p.add(jl)

p.add(jtf)

p.add(but)

this.add(p)

}

private void init() {

this.setSize(400,400)

center(this)

this.setTitle("随即点名器"渗陵)

names.add("a")

names.add("b")

names.add("c")

names.add("d")

names.add("e")

}

public static void center(Window win) {

int width = win.getWidth()

int height = win.getHeight()

Toolkit tool = Toolkit.getDefaultToolkit()

int screenWidth = tool.getScreenSize().width

int screenHeight = tool.getScreenSize().height

win.setLocation((screenWidth - width) / 2, (screenHeight - height) / 2)

}

public static void main(String [] args){

JFrame jf = new Window()

jf.setVisible(true)

jf.setDefaultCloseOperation(EXIT_ON_CLOSE)

}

}


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

原文地址: http://outofmemory.cn/yw/12519245.html

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

发表评论

登录后才能评论

评论列表(0条)

保存