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

升级到JDK11后VSCode中Huffman树Java代码报构造器错位错误如何解决?

问题排查结果

你的报错和JDK版本升级无关联,是代码本身存在Java语法错误导致的编译失败,具体问题如下:

  • 核心语法错误:Huffman类的定义写法错误,你写的是public class Huffman(),类名后不允许加括号,括号仅用于构造方法定义,类定义后直接跟类体大括号即可。编译器识别到类名后的括号会误以为你要定义构造方法,进而报出构造器错位相关的错误。
  • 次要语法错误:BuildHuffmanCodeTree方法声明了返回值类型为Node,但方法体内没有编写对应返回语句,不符合非void方法的语法要求。
  • 逻辑缺失:你在循环中创建的tempNode没有存入任何容器,后续无法使用这些节点完成哈夫曼树构建。

修正后的Huffman类参考代码

import java.util.PriorityQueue;
import java.util.Comparator;
// 移除类名后的多余括号
public class Huffman {
    public Node BuildHuffmanCodeTree(String[] chars, int[] weights) {
        // 用优先队列存储节点自动按权重排序
        PriorityQueue<Node> queue = new PriorityQueue<>(Comparator.comparingInt(Node::getWeight));
        for(int i = 0; i < chars.length; i++) {
            Node tempNode = new Node(chars[i], weights[i]);
            queue.add(tempNode);
        }
        // 补充哈夫曼树构建逻辑,返回最终根节点
        while (queue.size() > 1) {
            Node left = queue.poll();
            Node right = queue.poll();
            Node parent = new Node(left, right);
            queue.add(parent);
        }
        return queue.poll();
    }    
    public static void main(String[] args) {
        
    }
}

修正上述问题后即可正常编译运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:39:03