Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.IllegalArgumentException_Java_Algorithm_Artificial Intelligence - Fatal编程技术网

java.lang.IllegalArgumentException

java.lang.IllegalArgumentException,java,algorithm,artificial-intelligence,Java,Algorithm,Artificial Intelligence,我有Branch and Bound的实现,这个函数中有一个优先级队列,它将进一步使用它的getting IllegalArgumentException //这是我得到这个错误的那条线 **//这里我在这个函数中得到了一个错误,有一个优先级队列,它将进一步使用它的getting IllegalArgumentException** public void solve(int[][] initial, int x, int y, int[][] fin) { Compa

我有Branch and Bound的实现,这个函数中有一个优先级队列,它将进一步使用它的getting IllegalArgumentException

//这是我得到这个错误的那条线

**//这里我在这个函数中得到了一个错误,有一个优先级队列,它将进一步使用它的getting IllegalArgumentException**

 public void solve(int[][] initial, int x, int y, int[][] fin) {
            Comparator<Node> comp = new Comparator<Node>() {

                @Override
                public int compare(Node lhs, Node rhs) {
                    if((lhs.cost + lhs.level) > (rhs.cost + rhs.level))
                        return 1;
                    return 0;
                }
            };
//here is that line on which im getting this error
            PriorityQueue<Node> pq = new PriorityQueue<>(0, comp);
            Node root = new Node();
            root.newNode(initial, x, y, x, y, 0, null);
            root.cost = calculateCost(initial, fin);
            pq.add(root);

            while(!pq.isEmpty()) {
                Node min = pq.peek();
                pq.remove();
                if(min.cost == 0) {
                    printPath(min);
                    return;
                }

                for (int i = 0; i < 4; i++) {
                    if(isSafe(min.x + row[i], min.y + col[i]) == 1) {
                        Node child = new Node();
                        child.newNode(min.mat, min.x, min.y, min.x + row[i], min.y + col[i], min.level + 1, min);
                        child.cost = calculateCost(child.mat, fin);
                        pq.add(child);
                    }
                }
            }
        }

        public static void main(String[] args) {
            int[][] initial =
                {
                    {1, 2, 3},
                    {5, 6, 0},
                    {7, 8, 4}
                };

            int[][] fin =
                {
                    {1, 2, 3},
                    {5, 0, 6},
                    {8, 7, 4}
                };

            int x = 1, y = 2;

            Node newNode = new Node();
            newNode.solve(initial, x, y, fin);

        }

    }
我的重点是:


public PriorityQueueint initialCapacity,comparatory您需要发布完整的堆栈跟踪,并识别代码中引发异常的语句//这是我获取错误PriorityQueue pq=new PriorityQueue0,comp;谁否决了这个?这是正确的答案。谢谢你
 public void solve(int[][] initial, int x, int y, int[][] fin) {
            Comparator<Node> comp = new Comparator<Node>() {

                @Override
                public int compare(Node lhs, Node rhs) {
                    if((lhs.cost + lhs.level) > (rhs.cost + rhs.level))
                        return 1;
                    return 0;
                }
            };
//here is that line on which im getting this error
            PriorityQueue<Node> pq = new PriorityQueue<>(0, comp);
            Node root = new Node();
            root.newNode(initial, x, y, x, y, 0, null);
            root.cost = calculateCost(initial, fin);
            pq.add(root);

            while(!pq.isEmpty()) {
                Node min = pq.peek();
                pq.remove();
                if(min.cost == 0) {
                    printPath(min);
                    return;
                }

                for (int i = 0; i < 4; i++) {
                    if(isSafe(min.x + row[i], min.y + col[i]) == 1) {
                        Node child = new Node();
                        child.newNode(min.mat, min.x, min.y, min.x + row[i], min.y + col[i], min.level + 1, min);
                        child.cost = calculateCost(child.mat, fin);
                        pq.add(child);
                    }
                }
            }
        }

        public static void main(String[] args) {
            int[][] initial =
                {
                    {1, 2, 3},
                    {5, 6, 0},
                    {7, 8, 4}
                };

            int[][] fin =
                {
                    {1, 2, 3},
                    {5, 0, 6},
                    {8, 7, 4}
                };

            int x = 1, y = 2;

            Node newNode = new Node();
            newNode.solve(initial, x, y, fin);

        }

    }