使用IO流写一个随机点名程序
前言
最近学习了关于IO流的一些知识点,但是应用还不够,所以今天做个简单案例:
随机创建名字导入文件中:
package ioandcollection;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Random;
public class example02 {
public static void main(String[] args) throws IOException{
ArrayList<String> names = new ArrayList<>();
String[] surnames = {"张", "王", "李", "赵", "刘", "陈", "杨", "黄", "周", "吴"};
String[] maleNames = {"伟", "强", "磊", "军", "勇", "杰", "峰", "浩", "敏", "飞"};
String[] femaleNames = {"芳", "娜", "婷", "秀", "霞", "敏", "莉", "红", "萍", "玲"};
Random random = new Random();
for (int i = 0; i < 15; i++) {
String surname = surnames[random.nextInt(surnames.length)];
String name;
if (random.nextBoolean()) { // 随机选择男女
name = maleNames[random.nextInt(maleNames.length)];
} else {
name = femaleNames[random.nextInt(femaleNames.length)];
}
names.add(surname + name);
}
writeName(names);
}
public static void writeName(ArrayList<String> names) throws IOException {
String target = "filemould//students.txt";
System.out.println(names);
BufferedWriter wb = new BufferedWriter(new FileWriter(target));
for (String name : names) {
wb.write(name);
wb.newLine();
wb.flush();
}
wb.close();
}
}
将名字导出存储在集合中,然后随机点名:
package ioandcollection;
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;
import java.io.*;
import java.util.ArrayList;
import java.util.Random;
/*
* 需求:有一个文件里面存储了班级同学的姓名,每一个姓名占一行,要求通过程序实现随机点名器。
思路:
① 把文件中的数据读取到到集合中
② 使用Random产生一个随机数,获得随机索引。
③ 通过随机索引获取随机姓名
* */
public class example01 {
public static void main(String[] args) throws IOException {
ArrayList<String> list = new ArrayList<>();
String content = "filemould\\students.txt";
readFileContent(content,list);
//产生一个随机数,获得随机索引
Random random = new Random();
int randomIndex = random.nextInt(list.size());
//获取随机数姓名
String randomName = list.get(randomIndex);
System.out.println("被点到的同学是:" + randomName);
}
private static void readFileContent(String content,ArrayList<String> list) throws IOException {
BufferedReader br = null;
//创建文件字节缓冲输入流对象
br = new BufferedReader(new FileReader(content));
//一次读取一个字符
String name;
while((name = br.readLine())!=null){
list.add(name);
}
System.out.println(list);
br.close();
}
}
总结:
1、wb.newLIne()可以将光标移动到下一行
2、br.readLine()可以读取下一行的内容
使用IO流写一个随机点名程序的更多相关文章
- python3GUI--200行代码写一个上课点名程序(附源码)
@ 目录 一.准备工作 1.Tkinter 2.PIL 二.预览 1.启动 2.开始点名-顺序点名 3.开始点名-随机点名 4.手动加载人名单 5.开始点名-顺序点名-Pyqt5版本 6.人名单格式 ...
- python写一个随机点名软件
最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...
- 使用Java的多线程和IO流写一个文件复制功能类
创建一个复制功能类,继承Thread类,重写run()方法,把FileInputStream和FileOutputStream输入输出流写在run()方法内.示例代码如下: import java.i ...
- #写一个随机产生138开头手机号的程序 1.输入一个数量,产生xx条手机号 2.产生的这些手机号不能重复
import randomcount=int(input('请输入你所想要手机号数量:'))prefix='138'for i in range(count): num=random.sample(r ...
- Java基础-IO流对象之随机访问文件(RandomAccessFile)
Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...
- 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度。 2)输出字符串中第一个出现字母a的位置。 3)在字符串的第3个字符后面插入子串“hello”,输出新字符串。 4)将字符串“hello”替换为“me”,输出新字符串。 5)以字符“m”为分隔符,将字符串分离,并输出分离后的字符串。 */
namespace test4 {/* 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度. 2)输出字符串中第一个出现字母a的位置. 3)在字符串的第3个字符 ...
- python学习(10)字典学习,写一个三级菜单程序
学习了字典的应用.按老师的要求写一个三级菜单程序. 三级菜单程序需求如下: 1.深圳市的区--街道--社区---小区4级 2.建立一个字典,把各级区域都装进字典里 3.用户可以从1级进入2级再进入3级 ...
- JS: 随机点名程序与万年历
随机点名程序 document.write(Math.random()); var stu = ["张三", "王五", "张二", &qu ...
- Java基础知识强化之IO流笔记47:IO流练习之 随机获取文本文件中的姓名案例
1. 随机获取文本文件中的姓名案例 需求:我有一个文本文件中存储了几个名称,请大家写一个程序实现随机获取一个人的名字. 分析: A: 把文本文件中的数据存储到集 ...
- 使用IO流写文件的一些骚操作
序言 当需要对文件进行操作时,使用IO流是不能避免的操作:比如业务中需要存储一些请求的响应结果中的一些内容.当所需处理的文件过大时,如果频繁的关闭文件流,会造成很大的开销,何时关闭?往往会造成比较大的 ...
随机推荐
- Python socket实现简单聊天,同步输入和接收消息
查的资料很多都是必须等待接收数据后才能再次输入.做了修改,使用多线程的形式,实现一边输入,一边接收 服务端代码 import socket import threading import sys im ...
- linux的进阶命令
一. linux的基础命令 1.history 查看历史命令记录 2.ifconfig 查看所在的IP地址 3.tail -n 查看一个文件的后n行记录 4.head -n 查看一个文件的前n行记录5 ...
- linux内核离线升级步骤详解【亲测可用】
由于种种原因,linux的内核版本需要升级,但由于生产原因往往不能在线升级,在此记录笔者本人昨晚的的离线升级步骤,亲测可用. 我们知道,红帽和CentOS同源同宗,内核升级步骤也是一样的. 目录 ■ ...
- 造轮子之asp.net core identity
在前面我们完成了应用最基础的功能支持以及数据库配置,接下来就是我们的用户角色登录等功能了,在asp.net core中原生Identity可以让我们快速完成这个功能的开发,在.NET8中,asp.ne ...
- Java 集合的排序(正序倒序)、查找元素的下边、最大值、最小值
Java 集合的排序(正序倒序).查找元素的下边.最大值.最小值 集合的排序 集合查找对应元素的下标 集合的最大最小值 集合的排序 使用Collections.sort()排序,默认是递增.加上比较器 ...
- 入门篇-其之六-Java运算符(中)
祝所有程序员,1024节日快乐!!! 一.自增/自减运算符 假设有一个变量intValue的值为10,如果想让这个值加1,有哪些方式? 首先,我们可以使用最原始的方式: int intValue = ...
- 虹科喜报 | 虹科技术工程师【国内首批】拿下Redis认证开发者证书!
要说虹科数据库技术工程师有多强悍,认证考试2022年12月上线,次年2月就以全国首批速度强势通过考试,并于两周后正式收到[Redis认证开发人员]证书! 虹科小云忍不住浅浅炫耀一下: 或许大家对Red ...
- splay + 垃圾回收 知识点与例题的简要讲解
splay 简要讲解 前置芝士:普通二叉树 splay tree是一个越处理越灵活的数据结构,通过splay(伸展)操作,使整棵树的单次查询时间复杂度接近于O(log n),整棵树的高度也接近于log ...
- 字符串匹配|kmp笔记
很久之前学的了. 我很懒,不太喜欢画图. 做个笔记回忆一下: kmp 朴素比对字符串 所谓字符串匹配,是这样一种问题:"字符串 T 是否为字符串 S 的子串?如果是,它出现在 S 的哪些位置 ...
- CF1789D Serval and Shift-Shift-Shift 题解
题目链接 题目分析 首先,看到题目中的左移右移之后再异或,我们自然可以想到在移动的过程中字符串的一段前缀和后缀不会改变,考虑通过这个性质逐位还原. 因为异或 0 不会改变原本的值,所以我们可以找到整个 ...