「java课堂点名」java设计一个点名程序

博主:adminadmin 2022-11-22 01:44:08 62

本篇文章给大家谈谈java课堂点名,以及java设计一个点名程序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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

按照你第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")){

// 结束程序

}

}

}

「java课堂点名」java设计一个点名程序

java点名程序,如何增加一个被点名的概率

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

public class Test {

    // 实现思路:给每个key设置一个权重,权重越大被取到的概率越大,

    // 然后根据权重生成一个连续的大的数据区间,权重越大占用的区间长度越大,

    // 在这个连续的大区间中取随机数,取到的数落在哪个区间就取出该区间

    // 对应的key,从而实现了根据权重控制key获取的概率

    public static final Mapint[], String INTERVAL = new HashMap();

    public static int limit = 0;

    static {

        // 权重,表示被选中的机会大小

        MapString, Integer WEIGHT = new HashMap();

        WEIGHT.put("a", 1);

        WEIGHT.put("b", 5);

        WEIGHT.put("c", 10);

        WEIGHT.put("d", 20);

        for (Map.EntryString, Integer entry : WEIGHT.entrySet()) {

            String key = entry.getKey();

            int value = entry.getValue();

            INTERVAL.put(new int[]{limit, limit + value}, key);

            limit += value;

        }

    }

    // 随机获取一个key

    public static String getRandomKey() {

        // 获取一个指定范围内的随机数

        int ran = new Random().nextInt(limit);

        for (Map.Entryint[], String entry : INTERVAL.entrySet()) {

            int[] key = entry.getKey();

            String value = entry.getValue();

            if (ran = key[0]  ran  key[1]) {

                return value;

            }

        }

        return null;

    }

    public static void main(String[] args) {

        // 随机取WEIGHT中的key,统计每个key被取到的次数

        MapString, Integer count = new HashMap();

        for (int i = 0; i  1000000; i++) {

            String k = getRandomKey();

            if (count.containsKey(k)) {

                count.put(k, count.get(k) + 1);

            } else {

                count.put(k, 1);

            }

        }

        // 执行结果可以看出每个key取到的次数和设置的权重所占比例比较接近,

        // 取得次数越多比例越精确

        for (Map.EntryString, Integer entry : count.entrySet()) {

            String key = entry.getKey();

            Integer value = entry.getValue();

            System.out.println(key + ":" + value);

        }

    }

}

java点名系统源代码

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 ListString 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 ArrayListString();

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);

}

}

java课堂点名的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java设计一个点名程序、java课堂点名的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。