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

Java读取含常量的文本文件并将各值存入独立变量的方法

在Java中将文本文件的常量值存入独立变量的方法

根据你的需求,这里提供两种实用的实现方式,适配不同场景:

1. 固定常量直接赋值(适合已知变量名的情况)

如果你的常量是固定的(比如只有s、v),可以直接声明对应变量,读取每行后判断键名赋值:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ConstantHandler {
    public static void main(String[] args) {
        // 初始化默认值
        double s = 0.0;
        double v = 0.0;

        try (BufferedReader reader = new BufferedReader(new FileReader("constants.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                // 分割行内容,处理逗号前后的空格
                String[] parts = line.trim().split(",\\s*");
                if (parts.length != 2) continue; // 跳过格式错误的行

                String key = parts[0].trim();
                double value = Double.parseDouble(parts[1].trim());

                // 根据键名赋值给对应变量
                switch (key) {
                    case "s":
                        s = value;
                        break;
                    case "v":
                        v = value;
                        break;
                    // 新增常量时,添加对应的case即可
                }
            }
        } catch (IOException | NumberFormatException e) {
            e.printStackTrace();
        }

        // 直接使用变量进行计算
        double time = s / v;
        System.out.println("计算得到的时间:" + time);
    }
}

2. 使用Map存储(适合变量不固定的场景)

如果后续可能新增更多常量,用Map存储更灵活,无需修改变量声明:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class ConstantHandler {
    public static void main(String[] args) {
        Map<String, Double> constantsMap = new HashMap<>();

        try (BufferedReader reader = new BufferedReader(new FileReader("constants.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                String[] parts = line.trim().split(",\\s*");
                if (parts.length != 2) continue;

                String key = parts[0].trim();
                double value = Double.parseDouble(parts[1].trim());
                constantsMap.put(key, value);
            }
        } catch (IOException | NumberFormatException e) {
            e.printStackTrace();
        }

        // 通过键名获取值,getOrDefault避免键不存在时抛出空指针
        double s = constantsMap.getOrDefault("s", 0.0);
        double v = constantsMap.getOrDefault("v", 0.0);
        
        double doubleDistance = s * 2;
        System.out.println("双倍距离:" + doubleDistance);
    }
}

场景选择建议

  • 若常量列表固定,优先用第一种方法,代码可读性更高,直接用变量名更直观。
  • 若常量可能动态增减,选择第二种方法,扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:55:23