gpt4 book ai didi

java - 如果行和列中的所有元素都相同,如何检查二维数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:21:21 27 4
gpt4 key购买 nike

我正在尝试用 java 编写一段代码,它会查看行和列中的所有元素是否都相同并打印出它的索引。

例如,如果我有

的二维数组
{ 1, 0, 0, 0, 0}
{ 1, 0, 0, 0, 0}
{ 1, 1, 1, 1, 1}

我想打印出 2,0,这意味着第 2 行中的所有元素都相同,第 0 列中的所有元素也相同并且它们彼此相等。

我试着用 for 语句来做

int[][] array_1 = { {1}, 
{1} };
for(int row=0; row<array.length-1; row++){
for (int col=0; col<array[0].length-1; col++){
if(array[row][col]==array[row+1][col]&&
array[row][col]==array[row][col+1]&&
array[row][col]==array_1[0][0]) {
System.out.print(row);
System.out.println(col);
}
}
}

但它不起作用,因为它没有检查所有的行和列,它停在中间的某个地方,我不知道发生了什么。

您有什么建议吗?

最佳答案

您可以通过分离方法来做到这一点。
首先你可以写一个转置方法

public static int[][] transpose(int[][] A) {
int m = A.length;
int n = A[0].length;
int[][] C = new int[n][m];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
C[j][i] = A[i][j];
return C;
}

然后,您可以编写此方法来检查行和列。如果行的元素或列的元素不同,则此方法返回 false。否则返回 true。

public static boolean rowColEquals(int[] array) {
for (int i = 1; i < array.length; i++) {
int x = array[0];
if (x != array[i])
return false;
}
return true;
}

最后,您可以编写此方法来寻找答案。

public static void findEquals(int[][] array) {
for (int i = 0; i < array.length; i++) {
if (rowColEquals(array[i])) {
System.out.println("All " + array[i][0] + " is equal on row "
+ i);
}
}
array = transpose(array);
for (int i = 0; i < array.length; i++) {
if (rowColEquals(array[i])) {
System.out.println("All " + array[i][0] + " is equal on colomn "
+ i);
}
}
}

主要方法如下

public static void main(String[] args) {
int[][] y = { { 1, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1 } };
findEquals(y);
}

输出如下。

All 1 is equal on row 2
All 1 is equal on colomn 0

关于java - 如果行和列中的所有元素都相同,如何检查二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33530721/

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