尝试比较数组的元素。例如,如果array [0] [0]等于array [0] [1],则想返回一个布尔值。我想看看两个元素不相等会更容易。所以
boolean rowAlike = true;
for(int row = 0; row<size; row++)
{
for(int col = 0;col<size;col++)
{
nextNum = col + 1;
if(!square[row][col].equals(square[row][nextNum]))
rowAlike=false;
}
if(rowAlike)
System.out.println("All digits are the same in row " +row++);
由于数组是引用变量,我知道==将比较内存位置而不是这些元素的值。我在上面尝试了它,并尝试了
Arrays.equals(square[row][col],(square[row][nextNum])
我得到假错或编译错误。
编辑:我收到的假错是在使用==
时使用.equals
ExploreMatrix.java:89:错误:int无法解除引用
使用Arrays.equals时
ExploreMatrix.java:89:错误:没有为equals(int,int)找到合适的方法
答案 0 :(得分:0)
基元(例如int
)使用==
和/或!=
(视情况而定)的值进行测试。您需要在循环体中定义rowAlike
(或者它不会在下一行重置)。在col + 1
时访问col == size - 1
将导致ArrayIndexOutOfBounds。我建议你从1
开始,然后与之前的比较。接下来,当您第一次找到与之匹配的值时,您可以在循环中break
。最后,为了显示,您不应该修改row
的值(或者您将跳过一行)。把它们放在一起,
int[][] square = new int[size][size];
//
// ... Setup values in square ...
//
for (int row = 0; row < size; row++) {
boolean rowAlike = true;
for (int col = 1; col < size; col++) {
if (square[row][col - 1] != square[row][col]) {
rowAlike = false;
break;
}
}
if (rowAlike) {
System.out.printf("All digits are the same in row %d%n",
row + 1);
}
}
答案 1 :(得分:0)
if(!square[row][col].equals(square[row][nextNum]))
如果您的square
是String
数组,则上述代码将有效。
很遗憾,您没有在问题中定义square
。
使用==
比较基本类型,例如int
和.equals
,以便比较String
答案 2 :(得分:0)
您的代码中存在多个问题:
最有可能发生ArrayIndexOutOfBoundsException
(这是一个
RuntimeException
)这里:
for(int col = 0;col<size;col++){
nextNum = col + 1;
if(!square[row][col].equals(square[row][nextNum]))
//...
}
在上一次迭代中,col
将为size-1
,这意味着nextNum
将等于数组大小。大小为x
的数组
index 0
至x-1
。
您递增row
两次(for
- 循环和SYSOUT
)
我知道==会比较内存位置
这不适用于原始类型。根据您的例外情况,您尝试比较int
- 值。转到==
。
Arrays#equals()
method。