微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 中的实际参数列表和形式参数列表的长度不同

如何解决Java 中的实际参数列表和形式参数列表的长度不同

当我运行此代码时。我收到此错误

Node 类中的构造函数 Node 不能应用于给定类型;
heap.add(new Node(new Node('$',freq,left,right)));
^
必需:char、int、Node、Node
找到:节点
原因:实际和形式参数列表的长度不同

1个错误
进程以返回码 1 终止。

此语句适用于空值,但不适用于左右。我很困惑为什么会发生这种情况?

    class Node{
    int freq;
    char c;
    Node left,right;
    Node(char c,int freq,Node left,Node right){
        this.freq = freq;
        this.c = c;
        this.left = left;
        this.right = right;
    }   
    int getFreq(){
        return freq;
    }
    char getChar(){
        return c;
    }
}

public class HuffmanCoding {

    public static void main(String[] args) {
        PriorityQueue<Node> heap = new PriorityQueue<Node>(new Comparator<Node>(){
            @Override
            public int compare(Node p1,Node p2){return p1.freq - p2.freq;}
        });
        
        heap.add(new Node('a',10,null,null));
        heap.add(new Node('b',50,null));
        heap.add(new Node('d',20,null));
        heap.add(new Node('e',40,null));
        heap.add(new Node('f',80,null));    
        while(heap.size() > 1 ){
            Node left = heap.poll();
            Node right = heap.poll();
            int freq = left.getFreq() + right.getFreq();
            heap.add(new Node(new Node('$',right)));
        }
    }
}

解决方法

这个:

    heap.add(new Node(new Node('$',freq,left,right)));

实际上与

相同
    Node temp1 = new Node('$',right);
    Node temp2 = new Node(temp1);
    heap.add(temp2);

给你带来麻烦的是temp2的初始化。没有将 Node 作为参数的 Node 构造函数。

我想这只是一个错字,你的意思是

    heap.add(new Node('$',right));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。