需求:我有一個文件裏面存儲了班級同學的姓名,每一個姓名佔一行,要求通過程序實現隨機點名器。
思路:
①:創建字符緩衝輸入流對象
②:創建ArrayList集合對象
③:調用字符緩衝輸入流對象的方法讀數據
④:把讀取的字符串存儲到集合中
⑤:釋放資源
⑥:使用Random產生一個隨機數,隨機數的範圍在:[0,集合的長度)
⑦:把第六步產生的隨機數作爲索引到ArrayList集合中獲取值
⑧:把第七步得到的數據輸出到控制檯
代碼:
package com.yang.demo;
import java.io.*;
import java.util.ArrayList;
import java.util.Random;
/**
* @author WangYang
* @version 1.0
* @create 2020-02-11 20:27
* <p>
* 需求:我有一個文件裏面存儲了班級同學的姓名,每一個姓名佔一行,要求通過程序實現隨機點名器。
* 思路:
* ①:創建字符緩衝輸入流對象
* ②:創建ArrayList集合對象
* ③:調用字符緩衝輸入流對象的方法讀數據
* ④:把讀取的字符串存儲到集合中
* ⑤:釋放資源
* ⑥:使用Random產生一個隨機數,隨機數的範圍在:[0,集合的長度)
* ⑦:把第六步產生的隨機數作爲索引到ArrayList集合中獲取值
* ⑧:把第七步得到的數據輸出到控制檯
*/
public class RollcallDemo {
public static void main(String[] args) throws IOException {
//創建字符緩衝輸入流對象
BufferedReader br = new BufferedReader(new FileReader("MyIO\\studentInfo.txt"));
//創建ArrayList集合對象
ArrayList<String> array = new ArrayList<>();
String line;
while ((line = br.readLine()) != null) {
//把讀取的字符串存儲到集合中
array.add(line);
}
//釋放資源,這裏簡單處理
br.close();
Random random = new Random();
//返回僞隨機的,均勻分佈 int值介於0(含)和指定值(不包括)。
int randomNum = random.nextInt(array.size());
String selectedName = array.get(randomNum);
System.out.println("恭喜***" + selectedName + "***被選中");
}
}
運行結果:
另附studentInfo.txt:
林黛玉
薛寶釵
王熙鳳
史湘雲
賈元春
賈迎春
賈探春
賈惜春
秦可卿
妙玉
巧姐
李紈
注意:
BufferedReader br = new BufferedReader(new FileReader(“MyIO\studentInfo.txt”));
這裏使用的是相對路徑,idea裏相對的是module所在的同級目錄(即上面寫的MyIO目錄)