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

在Java中如何从TXT文件提取指定内容构建图用于Prim算法实现

Java实现文本文件拆分提取的方案

核心实现逻辑

  • 直接在读取行的循环内处理每行内容,不需要额外嵌套循环
  • 调用String类的split("\\s+")方法按任意空白字符分割每行,得到长度为3的数组,三个元素依次对应第一个节点、第二个节点、边的权重
  • 将权重字符串转为数值类型后,即可调用你已有的Node、Graph类的相关方法构建图结构

修正后的Graph类代码

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

class Graph
{
    // 假设你已有添加边的方法,示例方法名:addEdge(String node1, String node2, int weight)
    public Graph(File doc){
        // 用try-with-resources语法自动关闭流,避免资源泄漏
        try (BufferedReader br = new BufferedReader(new FileReader(doc))) {
            String s;
            while ((s = br.readLine()) != null) {
                // 跳过空行
                if (s.trim().isEmpty()) {
                    continue;
                }
                // 按任意空白字符分割行
                String[] parts = s.split("\\s+");
                // 拆分结果校验,避免格式错误导致数组越界
                if (parts.length == 3) {
                    String node1 = parts[0];
                    String node2 = parts[1];
                    int weight = Integer.parseInt(parts[2]);
                    // 调用你自己的加边方法构建图
                    addEdge(node1, node2, weight);
                    // 测试打印可以留着验证拆分结果
                    System.out.printf("节点1:%s,节点2:%s,权重:%d%n", node1, node2, weight);
                }
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 这里是示例的加边方法,替换成你自己已有的实现即可
    private void addEdge(String node1, String node2, int weight) {
        // 你的图构建逻辑
    }
}

注意事项

  • \\s+作为分隔符可以兼容单行内多个空格、制表符等多种空白分隔场景,比固定使用单个空格拆分兼容性更强
  • 如果你的权重是小数类型,把Integer.parseInt替换为Double.parseDouble即可
  • 增加了空行判断和拆分结果长度校验,避免文件格式异常导致程序报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:57:00