Java新手求助:如何将文本文件内容存入数组
嘿,刚学Java碰到文件读写和数组结合的问题很正常,我来帮你搞定~
问题分析与解决方案
先看看你现有代码里的几个关键问题:
- 没有处理
Scanner初始化失败的极端情况:如果文件找不到,in会是null,直接调用in.nextLine()会触发空指针异常 - 完全没创建用来存储数据的数组,这当然没法把文件内容存进去啦
- 循环逻辑没写完,也没有读取文件内容并写入数组的代码
下面是修正后的完整可运行代码,每一步都加了注释说明:
import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class FileToArrayDemo { public static void main(String[] args ) { Scanner in = null; try { // 初始化Scanner读取文件 in = new Scanner(new FileReader("input.txt")); // 读取第一行的用例数量 int numCases = Integer.parseInt(in.nextLine()); // 根据用例数量创建对应长度的数组(这里假设存字符串,存数字就改成int[]) String[] dataArray = new String[numCases]; // 循环读取每一行数据存入数组 for(int i = 0; i < numCases; i++) { // 先检查是否还有下一行数据,避免文件内容不足时报错 if(in.hasNextLine()) { dataArray[i] = in.nextLine(); } else { // 处理文件内容不够的情况,给个提示并设默认值 System.out.println("提示:文件内容不足,缺少第" + (i+1) + "条数据"); dataArray[i] = ""; } } // 验证:打印数组里的内容,确认是否存储成功 System.out.println("已存入数组的内容:"); for(String item : dataArray) { System.out.println(item); } } catch(IOException e) { // 捕获文件读取异常,打印错误信息 e.printStackTrace(); } finally { // 无论是否出错,都要关闭Scanner释放资源 if(in != null) { in.close(); } } } }
额外注意事项
- 如果你的文件里存储的是整数,把数组类型改成
int[] dataArray = new int[numCases];,读取时用dataArray[i] = Integer.parseInt(in.nextLine());即可 - 务必在
finally块关闭Scanner,避免资源泄漏 - 加上
hasNextLine()的判断很重要,能避免因文件实际行数少于指定的numCases而抛出异常
内容的提问来源于stack exchange,提问作者Ita
相关产品推荐
相关产品推荐

