使用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流是不能避免的操作:比如业务中需要存储一些请求的响应结果中的一些内容.当所需处理的文件过大时,如果频繁的关闭文件流,会造成很大的开销,何时关闭?往往会造成比较大的 ...
随机推荐
- 如何vue3中使用全局变量,与Vue2的区别
对比: 在vue2.x中我们挂载全局变量或方法是通过是使用Vue.prototype.$xxxx=xxx的形式来挂载,然后通过this.$xxx来获取挂载到全局的变量或者方法 但是 在vue3.x中显 ...
- 可视化-vscode安装matplotlib工具
可视化工具中,最流行的工具之一是 Matplotlib,它是一个数学绘图库,可以制作简单的图表,如折线图和散点图: 使用pip可以安装Matplotlib: 安装步骤:: 1.在vscode的终端输入 ...
- Flex 布局项目实战,好像没那么难!
在上篇文章别再用 float 布局了,flex 才是未来!中,我们聊到 Flex 布局才是目前主流的布局方式.在文章最后,我们还贴了一个案例,并且还浅浅地讲解了一下. 有些小伙伴说,这讲解得太粗了,要 ...
- 关于STM32F407ZGT6的USB损坏后使用ST-Link和USART1实现串口功能
开发板:STM32F407ZGT6: 目标:想使用软件"串口调试助手" 情况:开发板上的USB_UART口所在器件损坏或者直接没有: 解决办法:查看该开发板的原理图,可得:串口1的 ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-22-处理select下拉框-上篇
1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉框选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助.今天,我们讲下playwright的下拉框怎 ...
- 彻底搞懂CAP理论(电商系统)
1.理解CAP CAP是 Consistency.Availability.Partition tolerance三个词语的缩写,分别表示一致性.可用性.分区容忍性. 下边我们分别来解释: 为了方便对 ...
- .Net Core 3.1升级 .Net 5后出现代码错误 rzc generate exited with code 1.
安装.Net 5后出现错误,错误定位到了CodeGeneration相关的文件,找了半天也不知道哪里的问题. 升级类库,清理解决方案,删除obj.bin文件夹什么的卵用没有. 最后发现升级.Net 5 ...
- canvas实现动态替换人物的背景颜色
起因 今天遇见一个特别有意思的小功能. 就是更换人物图像的背景颜色. 大致操作步骤就是:点击人物-实现背景颜色发生变化 将图片绘画到canvas画布上 我们需要将图片绘制到canvas画布上. 这样做 ...
- 为什么FPGA中推荐使用独热码?
独热码只有一个比特位不同,所以在进行比较的时候: 假如我们要判断状态机是否处于某状态S1,代码如下 格雷码:assign S1 = (STATUS == 2'b01) 二进制码:assign S1 = ...
- antd Pro组件ProFormList实现自定义action
antd Pro组件ProFormList实现自定义action ProFormList是ant design pro的结构化数据组件,通常用来实现动态表单. 现在有个需求,除了组件自带的删除和复制, ...