import java.awt.Font;

創(chuàng)新互聯(lián)建站主營(yíng)城子河網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,城子河h5小程序制作搭建,城子河網(wǎng)站營(yíng)銷推廣歡迎城子河等地區(qū)企業(yè)咨詢
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("開始點(diǎn)名");
but.setBounds(100,150,100,40);
but.addActionListener(this);
label = new JLabel("隨機(jī)點(diǎn)名");
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("重新點(diǎn)名");
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("點(diǎn)名");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void initListDate(){
//在這個(gè)地方添加姓名就可以了
list.add("劉天廷");
list.add("孔老二");
list.add("張三");
list.add("李四");
list.add("王五");
list.add("麻六");
list.add("馮七");
list.add("京八");
list.add("茅臺(tái)九");
}
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();
}
//首先我們可以先把名字搞成一個(gè)數(shù)組,或者List都是可以的。
String[]?arr?=?{"張三","李四","王五","xxx"....};
String?random?=?arr[new?Random().nextInt(arr.size())];
System.out.println("隨機(jī)名字為:"+random);
public class test {
public static void main(String[] args) {
//定義人名數(shù)組
String [] name = {"張三","李四","王五","八神庵","不知火舞","大蛇","景天","唐雪見","李逍遙","趙靈兒"};
//隨機(jī)生成數(shù)組下標(biāo)、
int num = (int)(Math.random() * 1000);
//對(duì)生成的隨機(jī)數(shù)進(jìn)行判斷,如果小于數(shù)組下標(biāo),就跳出循環(huán)
while (numname.length-1) {
if (num=name.length-1) {
break;
}
num = (int)(Math.random() * 1000);
}
//將數(shù)組下標(biāo)設(shè)置成隨機(jī)數(shù),就可以實(shí)現(xiàn)人名的隨機(jī)抽取
System.out.println(“被抽到的同學(xué)是:”+name[num]);
}
}
按照你第2點(diǎn)描述,你僅僅是想實(shí)現(xiàn)隨即順序點(diǎn)名而已,并不是隨即點(diǎn)名。
我給你個(gè)解決方案:
在每次點(diǎn)中一名學(xué)生后,將java0803_students.txt文件中做個(gè)標(biāo)示,表示該學(xué)生已經(jīng)在本輪點(diǎn)名中被點(diǎn)過。
直到所有學(xué)生都點(diǎn)到后情況這個(gè)表示,準(zhǔn)備下一輪點(diǎn)名做標(biāo)記。
下面我給你一段偽代碼,包含了 random 的使用方法:
public class CallStudents(){
private static Random random = new Random();
public void call(){
// 重新設(shè)置學(xué)生被點(diǎn)名的標(biāo)示(根據(jù)點(diǎn)名情況)
reset();
long value = -1;
while (true) {
value = random.nextInt(maxValue + 1); // maxValue 是你當(dāng)前有學(xué)生的最大數(shù)目
//在這里讀取當(dāng)前隨即號(hào)對(duì)應(yīng)的學(xué)生記錄
String student = getStudentByID(value);
//判斷該學(xué)生是否被點(diǎn)過名
if(!checkCalled(student)){
// 設(shè)置已經(jīng)點(diǎn)過名
setCalled(student);
// 在控制臺(tái)上顯示被點(diǎn)名的學(xué)生信息
system.out.println(student);
// 結(jié)束循環(huán)
break;
}
}
}
private String getStudentByID(long id){
// 這個(gè)是讀取文件,需要你自己實(shí)現(xiàn)的
// 返回 java0803_students.txt 文件中對(duì)應(yīng)的學(xué)生記錄
}
private boolean checkCalled(String student){
// 至于是什么樣的規(guī)則,有你自己定義
// 我這里給你舉個(gè)例子
// 如果這條學(xué)生記錄中包含 一個(gè)字符為 called 的話,表明這名學(xué)生被點(diǎn)過名
if(student.indexOf("called") != -1){
retrn true;
}
return false;
}
private void setCalled(String student){
// 至于是什么樣的規(guī)則,有你自己定義
// 我這里給你舉個(gè)例子
// 設(shè)置學(xué)生已被點(diǎn)名
student += "_called";
// 將這個(gè)值重新寫回到你的java0803_students.txt 文件中,覆蓋愿信息!
}
private void reset(){
// 判斷是否所有學(xué)生都被點(diǎn)過名,如果點(diǎn)過名,清空所有學(xué)生被點(diǎn)名的標(biāo)記
// 這個(gè)實(shí)現(xiàn)有你自己定義,
// 這里我給你舉個(gè)例子
// 讀取文件,判斷每一個(gè)學(xué)生信息是否都標(biāo)有 called
// 如果都有,執(zhí)行刪除所有 called 的操作,并保存文件。
// 如果只有部分沒有,則表明本輪點(diǎn)名沒有結(jié)束,不做任何操作。
}
public static void main(String[] args){
String con = // 接受控制臺(tái)信息
if(con.equals("y")){
CallStudents call = new CallStudents();
call.call();
}
if(con.equals("n")){
// 結(jié)束程序
}
}
}
名稱欄目:java初學(xué)隨機(jī)點(diǎn)名代碼,java初學(xué)隨機(jī)點(diǎn)名代碼怎么用
本文網(wǎng)址:http://chinadenli.net/article30/dsesiso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、軟件開發(fā)、品牌網(wǎng)站制作、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)