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

Java布尔数组初始化和声明错误

如何解决Java布尔数组初始化和声明错误

我正在使用回溯在 Java 中解决著名的 N-Queen 程序。 为了检查回溯的条件,我声明了三个布尔数组,其中 我在布尔数组中遇到编译错误以检查第一个条件,即)左行布尔数组。

问题链接:[N-Queen 问题][1]

 class Solution{
    static ArrayList<ArrayList<Integer>> nQueen(int n) {
        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
        
        boolean leftRow[] == new boolean[n];
        boolean leftDiagonal[] = new boolean[2*n];
        boolean rightDiagonal[] = new boolean[2*n];
        
        ArrayList<Integer> curr = new ArrayList<>();
        solve( result,n,curr,leftRow,leftDiagonal,rightDiagonal);
        return result;
    }
    
    
    private void solve(ArrayList<ArrayList<Integer>> result,int n,int row,ArrayList<Integer> curr,boolean leftRow[],boolean leftDiagonal[],boolean rightDiagonal[]){
        if( row == n){
            result.add(new ArrayList<>(curr));
            return;
        }
        
        for(int col=0; col<n;r++){
            
            if( leftRow[col] || leftDiagonal[row + col] || rightDiagonal[row -col+n])
                continue;
                
            leftRow[col] = leftDiagonal[row+col] = rightDiagonal[row-col+n] = true;
            
            curr.set(col,row+1);
            
            solve(result,row+1,rightDiagonal);
            
            leftRow[col] = leftDiagonal[row+col] = rightDiagonal[row-col+n] = false;

        }
    }
}```


Error
> Compilation Error 

prog.java:41: error: ';' expected
        boolean leftRow[] == new boolean[n];
                         ^
prog.java:41: error: not a statement
        boolean leftRow[] == new boolean[n];
                             ^
2 errors



Thanks in advance :)


  [1]: https://practice.geeksforgeeks.org/problems/n-queen-problem0315/1#

解决方法

如果你看看这一行,你可能会发现你把两个等号而不是一个:

boolean leftRow[] == new boolean[n];

由于这不是一个正确的声明语句,它会引发错误。

,

这是我发现的错误:

  1. 第 5 行:您使用 == 而不是 =
  2. 第 15 行:您只能从静态上下文中引用静态上下文(您应该将静态添加到方法签名中
  3. 修复了代码中的一些拼写错误

如果你编译这段代码它会失败,但由于我不知道预期的结果是什么,我会保持原样

import java.util.ArrayList;

public class Tester{
    public static void main(String args[]){
        System.out.println(Solution.nQueen(15));
    }
}

class Solution{
    static ArrayList<ArrayList<Integer>> nQueen(int n) {
        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();

        boolean leftRow[] = new boolean[n];
        boolean leftDiagonal[] = new boolean[2*n];
        boolean rightDiagonal[] = new boolean[2*n];

        ArrayList<Integer> curr = new ArrayList<>();
        solve( result,n,curr,leftRow,leftDiagonal,rightDiagonal);
        return result;
    }


    private static void solve(ArrayList<ArrayList<Integer>> result,int n,int row,ArrayList<Integer> curr,boolean leftRow[],boolean leftDiagonal[],boolean rightDiagonal[]){
        if( row == n){
            result.add(new ArrayList<>(curr));
            return;
        }

        for(int col=0; col<n;row++){

            if( leftRow[col] || leftDiagonal[col] || rightDiagonal[col])
                continue;

            leftRow[col] = leftDiagonal[col] = rightDiagonal[col] = true;

            curr.set(col,row+1);

            solve(result,row+1,rightDiagonal);

            leftRow[col] = leftDiagonal[col] = rightDiagonal[col] = false;

        }
    }
}

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