java - 索引超出范围检查 n 皇后中的对角线路径
问题描述
我必须为类编写一个程序来测试二维数组。这就是“8皇后问题”。我们所要做的就是编写代码来测试给定的 2D 阵列是否对所有八个皇后都有一个有效的定位,这意味着:
每排只有一个皇后。
每列只有一位皇后。
每条对角线路径只有一个皇后。
我遇到的问题是对角线迭代。我得到一个Index 8 out of bounds for length 8
错误。
int gitter [][] // name for the 2D-Array
public static boolean gitterIstRichtig = true; // this is to check if conditions are met
for (row = 0; row <= gitter.length - 1; row++){
queens = 0;
for (column = 0; column <= gitter[0].length - 1; column++)
{
queens += gitter[row][column];
if ((gitter[row][column] == 1) && ((row + 1) <= gitter.length - 1))
{
if ((column + 1) <= gitter[0].length - 1)
{
int n = 1;
while ((column + n) <= gitter[0].length - 1)
{
if ((gitter[row + n][column + n] == 1)) // HERE IS WHERE THE ERROR POINTS TO
{
gitterIstRichtig = false;
}
n++;
}
}
if ((column - 1) >= 0)
{
int n = 1;
while ((column - n) >= 0)
{
if ((gitter[row + n][column - n] == 1)) // HERE IS WHERE THE ERROR POINTS TO
{
gitterIstRichtig = false;
}
n++;
}
}
}
}
}
解决方案
如果数组的长度为 8,则尝试访问索引 8 将始终超出范围,因为 0 是第一个元素。这意味着索引 7 实际上是第 8 个元素。
推荐阅读
- postgresql - 是否有一种功能可以知道我的几何图形的哪个百分比包含在另一个几何图形中?
- vue.js - 自定义,发出的事件(处理) - vueJS
- ios - 运行ios模拟器显示黑屏
- linux - 每个月运行 cron 作业,命令的结果需要在一个文件中
- python - 拆分时无法识别连字符
- android - 在 android 通知中显示带有滑行的 GIF
- c# - Xamarin.iOS Firebase 未收到推送通知但收到令牌
- javascript - 创建命令行工具 NodeJs
- javascript - Is there a way for me to create role based access after successfully login in angular 6
- java - Compiling a package-structured Java program with jars from terminal