Java实现点名器

简介: Java实现点名器

一、需求

需求:


我有一个文件里面存储了西游记里的名字,每一个名字占一行,要求通过程序实现随机点名器


文件名字全貌:

432b47f3251f4c6ca7ed6c79829565b0.png

 思路:


       1、创建字符缓冲流对象


       2、创建ArrayList集合对象


       3、调用字符缓冲输入流对象的方法读数据


       4、把读取到的字符串数据存储到集合中


       5、释放资源


       6、使用Random产生一个随机数,随机数的范围在,[0,集合长度]


       7、把第6步产生的随机数作为索引到ArrayList集合中获取值


       8、把第7步得到的数据输出在控制台

二、代码

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;
public class CallNameDemo {
    public static void main(String[] args) throws IOException {
        //创建字符缓冲流对象
        BufferedReader br = new BufferedReader(new FileReader("bw.java"));
        //创建ArrayList集合对象
        ArrayList<String> array = new ArrayList<String>();
        //调用字符缓冲输入流对象的方法读数据
        String line;
        while ((line = br.readLine()) != null) {
            //把读取到的字符串数据存储到集合中
            array.add(line);
        }
        //释放资源
        br.close();
        //使用Random产生一个随机数,随机数的范围在,[0,集合长度]
        Random r = new Random();
        int index = r.nextInt(array.size());
        //把第6步产生的随机数作为索引到ArrayList集合中获取值
        String name = array.get(index);
        //把第7步得到的数据输出在控制台
        System.out.println("幸运者是:" + name);
    }
}

三、运行结果

aa252e2efb1f4288ad189fe8396ce6b4.png

此案例是根据字符缓冲输入流的特有功能,把文本文件中的数据读取到集合中,再根据随机产生的数字索引获取值,进行随机点名。

目录
相关文章
Java随机点名和猜拳游戏运行代码
Java随机点名和猜拳游戏运行代码
java202303java学习笔记第三十三天带有概率的随机点名2
java202303java学习笔记第三十三天带有概率的随机点名2
57 0
java202303java学习笔记第三十八天常用工具包hutool随机点名器
java202303java学习笔记第三十八天常用工具包hutool随机点名器
74 0
java202303java学习笔记第三十三天带有概率的随机点名
java202303java学习笔记第三十三天带有概率的随机点名
60 0
|
Java
Java点名器,文章中内含源码
Java点名器,文章中内含源码
143 0
Java点名器,文章中内含源码
|
存储 Java 索引
Java初学者作业——编写JAVA程序,在控制台中输入六位员工的姓名,通过随机点名方式,输出当选组长的员工姓名。
Java初学者作业——编写JAVA程序,在控制台中输入六位员工的姓名,通过随机点名方式,输出当选组长的员工姓名。
427 0
Java初学者作业——编写JAVA程序,在控制台中输入六位员工的姓名,通过随机点名方式,输出当选组长的员工姓名。
|
8天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
10天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
10天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。
|
11天前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
33 3