gpt4 book ai didi

java - 求解 N 个皇后时出现数组索引越界异常

转载 作者:行者123 更新时间:2023-12-01 09:09:13 30 4
gpt4 key购买 nike

我正在编写使用递归回溯来解决 8 个皇后问题的代码(将 n 个国际象棋皇后放在 n × n 的棋盘上,这样皇后就不会互相攻击)。

我的任务是创建两个方法:编写一个公共(public)solveQueens(int n)方法来解决nxn板的问题

编写一个私有(private)递归placeQueen(board, column)方法来尝试将皇后放置在指定的列中。

到目前为止,我已经在我的程序中编写了以下内容:

public class Queen {

public static boolean isLegal(int[] board, int n) {
for (int i = 0; i < n; i++) {
if (board[i] == board[n]) {
return false;
}
if ((board[i] - board[n]) == (n - i)) {
return false;
}
if ((board[n] - board[i]) == (n - i)) {
return false;
}
}
return true;

}

public static void solver(int n) {
int[] board = new int[n];
PlaceQueen(board, 0);
}

private static int[] PlaceQueen(int[] board, int column) {
int n = board.length;
if (column == n); else {
for (int row = 0; row < n; row++) {
board[column] = row;
if (isLegal(board, column)) {
PlaceQueen(board, column + 1);
}

}
}
return (board);
}

public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
solver(n);
}
}

我的程序成功编译,但每当我尝试运行它时,都会收到此错误。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Queen.main(Queen.java:39)

关于我应该在哪里编辑代码以消除此异常的反馈有什么建议吗?

最佳答案

您是否为该程序提供了参数?它期望有一个整数参数。

public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
solver(n);
}

如果您尝试访问不在 args 数组范围内的索引,则会引发 java.lang.ArrayIndexOutOfBoundsException

关于java - 求解 N 个皇后时出现数组索引越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41025902/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com