gpt4 book ai didi

java - 查找二维数组的主要和次要对角线是否由 0 组成

转载 作者:行者123 更新时间:2023-11-29 06:47:58 25 4
gpt4 key购买 nike

这是我正在为 Java 入门课解决的学校问题。作业是编写一个程序,生成一个由随机生成的二进制数组成的 8 x 8 矩阵,并让程序检查哪些列(如果有)全为 0,以及主对角线和次对角线是否也由零组成。主对角线是从左上角到右下角形成的对角线(即arrayName[0][0] to arrayName[8][8] case) 和次对角线是从矩阵的右上角到左下角的对角线。

除了检查主要对角线和次要对角线的部分外,我的所有功能都正常运行,但我不明白为什么这不起作用。我一直试图做的就是计算沿对角线的零个数,如果这个数字是 8,那么你就得到了一个由 0 组成的对角线。以下是我对主要和次要数组的两种方法:

public static void majorDiagonal(int[][] board) {
byte count = 0;

for(int row = board.length - 1, offsetNumber = board.length - 1; row > 0; row--, offsetNumber--)
for(int column = board.length - 1; column > 0; column--)
if(board[row][offsetNumber] == 0) count++;

if(count == 8) System.out.println("All zeroes on the major diagonal");
}

public static void minorDiagonal(int[][] board) {
byte count = 0;

for(int row = board.length - 1, offsetNumber = 0; row > 0; row--, offsetNumber++)
for(int column = board.length - 1; column > 0; column--)
if(board[row][offsetNumber] == 0) count++;

if(count == 8) System.out.println("All zeroes on the minor diagonal");
}

我在for循环中试图通过向上计数找到主对角线时遇到的一个有趣的错误,即:

for(int row = 0; row< board.length; row++)
for(int column = 0; column < board.length; column++)
if(board[row][row] == 0) count++;

代码无法运行,但如果对角线全为 1 和一个 0,它会打印“主对角线上全为零”,即使变量 count 不是 8。

希望这是有道理的,感谢您的帮助。

最佳答案

你把事情搞得太复杂了。考虑一下您需要检查的元素的位置。对于主对角线,索引为:(0,0)、(1,1)、(2,2)、...、(7,7)。现在暂停一下,观察变化的模式,并思考:生成这样一个序列实际上需要多少个循环?次对角线只是表面上的不同:(0,7), (1,6), (2,5), ..., (7,0) - 可以重写为:(7-7, 7), ( 7-6, 6), (7-5, 5), ... (7-0, 0)。再次考虑您实际需要多少个循环。

关于java - 查找二维数组的主要和次要对角线是否由 0 组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1191192/

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