1.课堂随机点名目的
利用java IntelliJ IDEA工具实现随机点名。
2.代码实现:
版本1.0
难点:随机函数的生成
java生成随机数有两种方法:
使用Math方法,()随机生成一个double类型[0,1)
使用Random方法生成随机数
(2)
import ;
public class RandomRollCall_1 {
// 版本 1.0
// 说明:根据字符串数组存入同学姓名,利用随机函数进行随机点名
public static void main(String[] args) {
//使用字符串数组存入同学名单,假定第一位同学为1号。
String[] list = {"王二","张三","李四"};
// 建立一个产生随机数的对象。
Random random = new Random();
// 构建 数组长度范围内的随机整数 这里为 0-2
int name = ();
// 利用 for 循环遍历数组,当随机数与数组下标匹配时,输出被抽同学
for (int i = 0;i<;i++){
if(name == i){
("被抽中的同学是:" + (name+1) +"号,"+ list[name]+"同学");
}
}
}
}
版本2.0
难点:文件的读入
(1) 类:文件和文件目录路径的抽象表示形式,与平台无关
(2)File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。
(3) 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
(4) File对象可以作为参数传递给流的构造器,指明读取或写入的"终点"。
(5)绝对路径:是一个固定的路径,从盘符开始
(6)相对路径:是相对于某个位置开始
(file类可参考:/weixin_52533007/article/details/123274351)
import ;
import .*;
public class RandomRollCall_2 {
// 版本 2.0
// 说明:根据字符串数组存入同学姓名,利用随机函数进行随机点名
// 升级功能:从文件读入同学名单
public static void main(String[] args)throws IOException {//throws是方法可能抛出异常的声明
//String[] list = {"王二","张三","李四"};
//File file = new File("E:\\Mycache\\JavaCourse\\JavaSE_Assignment\\测试名单.txt");
File file = new File("");// 相对路径()
// 可参考:/weixin_52533007/article/details/123274351
if (()) { // 判断文件是否存在
BufferedReader r = new BufferedReader(new FileReader(file));//缓冲区读取内容,避免中文乱码
int i = 0;
String[] list = new String[4];
while ((list[i] = ()) != null) {
i++;
}
/** 关闭文件
* 那么不关闭有什么后果呢?不关闭就造成文件描述符无法释放,属于一种系统文件的浪费
* 不关闭可能造成对文件的写入丢失,写入有可能存在缓存区,没有关闭并且没有主动flush到具体的文件上,则可能造成丢失。
* 如果该文件被文件锁独占,那么就会造成其他线程无法操作该文件。
* */
();
// for (String str : list) {
// (str);
// }
Random random = new Random();
// int flag = 0;
// while (flag < 10) {
// int name = (3);
// flag++;
// (name);
// }
int name = (3);
for (int j = 0; j < -1; j++) { //利用 for 循环遍历数组,当随机数与数组下标匹配时,输出被抽同学
if (name == j) {
("被抽中的同学是:" + (name + 1) + "号," + list[name] + "同学");
}
}
}else {
("文件不存在");
}
}
}
版本3.0
难点:GUI(图形化界面)的构建
1、java的图形用户界面的基本组成部分是组件。
2、组件不能独立显示出来,必须将组件放在容器中才能显示,容器可以容纳多个组件(调用容器的add方法)。
3、最常用的两个容器是窗口(Frame)和面板(Panel)。
JFrame() 创建新窗体,该窗体初始为不可见
JFrame(String title) 创建新窗体,使用参数title指定标题,该窗体初始为不可见
方法:
void setSize(int width, int height)//设置窗体大小
void setVisible(boolean b)//可视化
void setTitle(String title)//设置窗体标题
void setResizable(boolean resizable)//设置窗体大小是否可变
void setLocation(int x,int y)//设置窗体位置
void setLocationRelativeTo(null);//设置窗体在中间显示
void setDefaultCloseOperation(int operation)//设置关闭窗体后的操作
void dispose()//释放窗体
(可参考原文链接:/xinin919/article/details/126363997)
package InterestGroupWork1;
import .*;
import ;
import ;
import ;
import ;
import ;
import .*;
import ;
import ;
public class RandomRollCall_3 extends JFrame implements ActionListener {
// 版本 3.0
// 说明:根据字符串数组存入同学姓名,利用随机函数进行随机点名
// 升级功能:1、从文件读入同学名单
// 2、图形化界面
// 主函数入口
public static void main(String[] args) {//throws是方法可能抛出异常的声明
RandomRollCall_3 r = new RandomRollCall_3();
(true); // setVisible(boolean)方法是用来显示(true)/隐藏(false)GUI组件的
}
// 实例化
private JPanel con = new JPanel();
private JTextField input_text = new JTextField();
private JButton c_Btn = new JButton("开始");
public RandomRollCall_3() throws HeadlessException {
init();
addComponent();
}
public void addComponent() { // 添加控件
this.input_text.setPreferredSize(new Dimension(490, 80));//文本框大小
this.c_Btn.setPreferredSize(new Dimension(100, 80));//按钮大小
c_Btn.setFont(new Font("粗体", , 30)); //按钮内文本格式
Font font = new Font("楷体", , 30);//文本框内文字格式
this.input_text.setFont(font);
this.c_Btn.setForeground(); //字体颜色
(input_text);
(c_Btn);
c_Btn.addActionListener(new ActionListener() {//开始按钮的实现
public void actionPerformed(ActionEvent e) {
try {
input_text.setText(function());
} catch (IOException ex) {
();
}
}
});
(con, );
}
public void actionPerformed(ActionEvent e) {
}
// 获取屏幕宽度
public static final int SCREEN_W = ().getScreenSize().width;
// 获取屏幕高度
public static final int SCREEN_H = ().getScreenSize().height;
public void init() {//初始化的方法
("课堂随机点名");
(500, 300);
(new BorderLayout());
(false);
((SCREEN_W - 500) / 2, (SCREEN_H - 300) / 2);
(JFrame.EXIT_ON_CLOSE);
}
public static String function() throws IOException {
// String[] list = {"王二","张三","李四"};
// File file = new File("E:\\Mycache\\JavaCourse\\JavaSE_Assignment\\测试名单.txt");
File file = new File("");// 相对路径()
// 可参考:/weixin_52533007/article/details/123274351
if (()) { // 判断文件是否存在
BufferedReader r = new BufferedReader(new FileReader(file));//缓冲区读取内容,避免中文乱码
int i = 0;
String[] list = new String[4];
while ((list[i] = ()) != null) { // 读取文件的一行将其存入list数组中
i++;
}
/** 关闭文件
* 那么不关闭有什么后果呢?不关闭就造成文件描述符无法释放,属于一种系统文件的浪费
* 不关闭可能造成对文件的写入丢失,写入有可能存在缓存区,没有关闭并且没有主动flush到具体的文件上,则可能造成丢失。
* 如果该文件被文件锁独占,那么就会造成其他线程无法操作该文件。
* */
();
// for (String str : list) {
// (str);
// }
Random random = new Random();
// int flag = 0;
// while (flag < 10) {
// int name = (3);
// flag++;
// (name);
// }
int name = (3);
int j = 0;
for (j = 0; j < - 1; j++) { //利用 for 循环遍历数组,当随机数与数组下标匹配时,输出被抽同学
if (name == j) {
//("被抽中的同学是:" + (name + 1) + "号," + list[j] + "同学");
break;
}
}
return ("被抽中的同学是:" + (name + 1) + "号," + list[j] + "同学");
}
else {
return "文件不存在";
}
}
}
总结