如何使用Scanner读取文件并存储到ArrayList中?
嘿,我明白你刚接触编程,while循环还有点摸不着头脑,别担心,我一步步教你怎么用Scanner读取文件内容并存到ArrayList里~
用Scanner读取文件并存储到ArrayList的分步指南
首先,咱们得先确保你的文本文件格式是对的——比如每个形容词/名词单独占一行,这样Scanner读取起来会很方便。接下来,我会把代码补全,同时解释每一步的作用,帮你理解while循环在这里的用法。
第一步:初始化ArrayList和编写通用读取方法
你已经声明了三个ArrayList,接下来咱们写一个通用的读取方法,不用重复写三次相同的逻辑:
// 通用读取方法:传入文件路径,返回存储内容的ArrayList private ArrayList<String> readFile(String filePath) throws FileNotFoundException { ArrayList<String> list = new ArrayList<>(); // 创建Scanner对象,关联目标文件 Scanner scanner = new Scanner(new File(filePath)); // 核心的while循环:只要文件里还有下一行内容,就继续执行循环 while (scanner.hasNextLine()) { // 读取当前行的文本(自动跳过换行符) String line = scanner.nextLine(); // 把读取到的内容添加到ArrayList中 list.add(line); } // 用完Scanner记得关闭,释放资源 scanner.close(); return list; }
第二步:在JavaFX的start方法里调用读取方法
因为你是JavaFX应用,所以可以在start方法里初始化这三个列表:
@Override public void start(Stage primaryStage) { try { // 假设你的三个文件分别叫adjectives1.txt、adjectives2.txt、nouns.txt,放在项目根目录 adjectives1 = readFile("adjectives1.txt"); adjectives2 = readFile("adjectives2.txt"); nouns = readFile("nouns.txt"); // 这里可以继续写生成侮辱性语句的逻辑,比如随机取三个列表里的元素组合 // 比如:String insult = "You are a " + adjectives1.get(0) + " " + adjectives2.get(0) + " " + nouns.get(0); } catch (FileNotFoundException e) { // 处理文件找不到的异常,新手可以先打印错误信息排查问题 e.printStackTrace(); System.out.println("找不到指定的文件,请检查文件路径是否正确!"); } }
关键知识点拆解
scanner.hasNextLine():这个方法会检查文件里是否还有未读取的行,返回true就说明还有内容,while循环就会继续执行——这就是while循环在这里的核心作用:直到把文件所有内容读完才停止。scanner.nextLine():读取当前行的纯文本内容,自动忽略行尾的换行符,所以你拿到的就是每行的实际内容。- 异常处理:读取文件可能会遇到找不到文件的情况,所以必须处理
FileNotFoundException,这里用try-catch捕获并提示错误,更适合新手排查问题。
额外小提示
- 如果你不确定文件路径,可以先用绝对路径测试,比如Windows的
"C:/Users/你的用户名/Documents/adjectives1.txt",或者Linux/Mac的"/home/你的用户名/adjectives1.txt"。 - 读取完后可以打印列表内容确认是否成功:
System.out.println(adjectives1);
内容的提问来源于stack exchange,提问作者poLyzon
相关产品推荐
相关产品推荐

