前言

最近学习了关于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流写一个随机点名程序的更多相关文章

  1. python3GUI--200行代码写一个上课点名程序(附源码)

    @ 目录 一.准备工作 1.Tkinter 2.PIL 二.预览 1.启动 2.开始点名-顺序点名 3.开始点名-随机点名 4.手动加载人名单 5.开始点名-顺序点名-Pyqt5版本 6.人名单格式 ...

  2. python写一个随机点名软件

    最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...

  3. 使用Java的多线程和IO流写一个文件复制功能类

    创建一个复制功能类,继承Thread类,重写run()方法,把FileInputStream和FileOutputStream输入输出流写在run()方法内.示例代码如下: import java.i ...

  4. #写一个随机产生138开头手机号的程序 1.输入一个数量,产生xx条手机号 2.产生的这些手机号不能重复

    import randomcount=int(input('请输入你所想要手机号数量:'))prefix='138'for i in range(count): num=random.sample(r ...

  5. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  6. 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度。 2)输出字符串中第一个出现字母a的位置。 3)在字符串的第3个字符后面插入子串“hello”,输出新字符串。 4)将字符串“hello”替换为“me”,输出新字符串。 5)以字符“m”为分隔符,将字符串分离,并输出分离后的字符串。 */

    namespace test4 {/* 4.写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能: 1)输出字符串的长度. 2)输出字符串中第一个出现字母a的位置. 3)在字符串的第3个字符 ...

  7. python学习(10)字典学习,写一个三级菜单程序

    学习了字典的应用.按老师的要求写一个三级菜单程序. 三级菜单程序需求如下: 1.深圳市的区--街道--社区---小区4级 2.建立一个字典,把各级区域都装进字典里 3.用户可以从1级进入2级再进入3级 ...

  8. JS: 随机点名程序与万年历

    随机点名程序 document.write(Math.random()); var stu = ["张三", "王五", "张二", &qu ...

  9. Java基础知识强化之IO流笔记47:IO流练习之 随机获取文本文件中的姓名案例

    1.  随机获取文本文件中的姓名案例     需求:我有一个文本文件中存储了几个名称,请大家写一个程序实现随机获取一个人的名字.     分析:           A:  把文本文件中的数据存储到集 ...

  10. 使用IO流写文件的一些骚操作

    序言 当需要对文件进行操作时,使用IO流是不能避免的操作:比如业务中需要存储一些请求的响应结果中的一些内容.当所需处理的文件过大时,如果频繁的关闭文件流,会造成很大的开销,何时关闭?往往会造成比较大的 ...

随机推荐

  1. RAC 环境中 gc block lost 和私网通信性能问题的诊断

    声明:此文来自于MOS(Doc ID 1674865.1),整理在此以便于大家阅读学习. ■ 概要 在Oracle的RAC环境中,数据库会收集global cache 的工作负载统计信息,并把这些信息 ...

  2. Docker 安装 Redis 单机&集群总结

    前言 Redis 是一个开源的使用 ANSI C 语言编写.遵守 BSD 协议.支持网络.可基于 内存 . 分布式 .可选持久性的键值对( Key-Value )存储数据库 redis版本:redis ...

  3. CF1534C

    题目简化和分析: 涉及算法:并查集. 为什么要使用并查集: 因为交换只能是列交换,并且保证不与别的重复 我们通过观察题目发现,某些列之间互为限制关系 即如果某列序列排序方式固定,则被限制的列也为固定的 ...

  4. 用Rust手把手编写一个Proxy(代理), 准备篇, 动手造轮子

    用Rust手把手编写一个Proxy(代理), 准备篇, 动手造轮子 wmproxy 将实现http/https代理, socks5代理, 后续将实现websocket代理, 内外网穿透等, 会将实现过 ...

  5. 导出所有容器id号

    #!/bin/bash a=`docker ps|awk 'NR>1{print $1}'` FORMAT="%-12s\t,\t%-12s\t,\t%-12s\n" pri ...

  6. ceph的应用

    创建 CephFS 文件系统 MDS 接口 -------------------- 创建 CephFS 文件系统 MDS 接口 -------------------- //服务端操作 1)在管理节 ...

  7. http协议与apache

    http协议与apache 1.httpd协议 两台主机通信需要socket文件  yum insatll -y nc  ​  [root@localhost ~]#nc -l 8000  #主机1 ...

  8. LeetCode-Java:88合并两个有序数组

    题目: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目. 请你 合并 nums2 到 nums1 中 ...

  9. 【开源】int,long long去一边去:高精度大合集!

    加法 \(add\) string add(string s1, string s2) { //时间复杂度 O(log n) string res = ""; int c = 0, ...

  10. AutoCAD ObjectARX 二次开发(2020版)--4,使用ARX向导创建CAD二次开发项目(编程框架)--

    手动创建ObjectARX应用程序非常麻烦,在此步骤中,将介绍ObjectARX向导. 在这里,我们将使用ObjectARX向导创建我们的ObjectARX应用程序. 本节的程序的需求是,接收CAD用 ...