You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何将.txt文件中的信息拆分存储为多个字符串与变量

解决方法

你只需要按行号匹配规则分别处理每一行内容即可,原有代码存在首次读取第一行后直接进入循环丢弃第一行的问题,修正后的实现如下:

完整代码

private void readFile(String fileName) {
    // 定义对应存储变量
    int zooNumber = 0;
    int animalNumber = 0;
    StringBuilder animalMatrix = new StringBuilder();
    int dogNumber = 0;
    int dogAppetite = 0;
    int dogWeight = 0;
    int dogHeight = 0;

    // 用try-with-resources自动关闭IO流,避免资源泄漏
    try (BufferedReader bufferedReader = new BufferedReader(new FileReader("myData.txt"))) {
        String line;
        int lineNum = 1;
        while ((line = bufferedReader.readLine()) != null) {
            // 去除首尾空字符,跳过空行
            line = line.trim();
            if (line.isEmpty()) {
                continue;
            }
            String[] parts = line.split("\\s+");
            switch (lineNum) {
                // 第1行:动物园编号、动物数量
                case 1:
                    zooNumber = Integer.parseInt(parts[0]);
                    animalNumber = Integer.parseInt(parts[1]);
                    break;
                // 第2-5行:动物矩阵数据
                case 2:
                case 3:
                case 4:
                case 5:
                    animalMatrix.append(line).append("\n");
                    break;
                // 第6行:dog相关属性
                case 6:
                    dogNumber = Integer.parseInt(parts[1]);
                    dogAppetite = Integer.parseInt(parts[2]);
                    dogWeight = Integer.parseInt(parts[3]);
                    dogHeight = Integer.parseInt(parts[4]);
                    break;
                default:
                    // 超出约定行号可自行扩展处理逻辑
                    break;
            }
            lineNum++;
        }

        // 测试输出验证结果
        System.out.println("动物园编号:" + zooNumber);
        System.out.println("动物数量:" + animalNumber);
        System.out.println("动物矩阵数据:\n" + animalMatrix);
        System.out.println("狗编号:" + dogNumber);
        System.out.println("狗食量:" + dogAppetite);
        System.out.println("狗体重:" + dogWeight);
        System.out.println("狗身高:" + dogHeight);

    } catch (IOException e) {
        System.out.println("文件读取异常:" + e.getMessage());
    }
}

逻辑说明

  • 按行号匹配规则处理对应内容,lineNum变量从1开始计数,和需求里的行号完全对应,不易出错
  • 用split("\\s+")拆分字符串,适配多个空格、制表符分隔的场景,兼容性更强
  • 矩阵数据拼接时保留换行符,和原文件格式完全一致
  • try-with-resources语法会在执行完成后自动关闭流,不需要手动编写close逻辑,避免异常场景下的资源泄漏

内容的提问来源于stack exchange,提问作者user13971133

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:27:04