重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
import java.awt.Font;
创新互联建站主营城子河网站建设的网络公司,主营网站建设方案,重庆APP开发公司,城子河h5小程序制作搭建,城子河网站营销推广欢迎城子河等地区企业咨询
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 ListString list = new ArrayListString();
}
//首先我们可以先把名字搞成一个数组,或者List都是可以的。
String[] arr = {"张三","李四","王五","xxx"....};
String random = arr[new Random().nextInt(arr.size())];
System.out.println("随机名字为:"+random);
public class test {
public static void main(String[] args) {
//定义人名数组
String [] name = {"张三","李四","王五","八神庵","不知火舞","大蛇","景天","唐雪见","李逍遥","赵灵儿"};
//随机生成数组下标、
int num = (int)(Math.random() * 1000);
//对生成的随机数进行判断,如果小于数组下标,就跳出循环
while (numname.length-1) {
if (num=name.length-1) {
break;
}
num = (int)(Math.random() * 1000);
}
//将数组下标设置成随机数,就可以实现人名的随机抽取
System.out.println(“被抽到的同学是:”+name[num]);
}
}
按照你第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")){
// 结束程序
}
}
}