我们首先分析题目的要求,顾名思义。就是随机获取一个人的名字然后打印出来;将文件中的内容打印到控制台,我们首先想到的是字符缓冲输入流将内容读出来,(选择字符缓冲输入流的原因是效率比较高),再找一个容器将这些内容存储起来,产生一个随机数,通过获取随机数从而获取里边的内容,首先想到的就是集合,其次有索引,随机获取索引从而获取索引对应的值,集合里边有索引的是List,二这里是查找,不是增删,最终选择ArrayList;
题目分析完之后,这里捋一下做题步骤:
1.创建字符缓冲输入流,将数据读出来
2.创建ArrayList集合,准备接受对象
3.一次读一个字符,准备读数据
4.将读出来的数据依次添加到集合中
5.创建Random对象
6.每次产生一个0-----集合长度的随机数
7.集合通过调用get(int index)方法获取指定位置的元素,产生的随机数作为参数传进去
8.打印通过索引获取到的姓名;
代码实现 如下
public class Demo10 {
public static void main(String[] args) throws IOException {
//定义一个路径
String path="D:\\A\\c.txt";
//调用方法,获取姓名
String name = randomName(path);
System.out.println("随机点到的名字是:"+name);
}
/**
* 随机点名的方法
* @param path 存入名字的文本路径
* @return 所要获取的姓名
* @throws IOException
*/
public static String randomName(String path) throws IOException {
//1.创建字符缓冲输入流,将数据读出来
BufferedReader br = new BufferedReader(new FileReader(path));
//2.创建ArrayList集合,准备接受对象
ArrayList<String> list = new ArrayList<>();
//3.一次读一个字符,准备读数据
String line;
while ((line = br.readLine()) != null) {
//4.将读出来的数据依次添加到集合中
list.add(line);
}
//5.创建Random对象
Random random = new Random();
//6.每次产生一个0-----集合长度的随机数
int num = random.nextInt(list.size());
//7.集合通过调用get(int index)方法获取指定位置的元素,产生的随机数作为参数传进去
String name = list.get(num);
return name;
}
}