比较 int 数组元素值 Java

Comparing int array element values Java

正在尝试比较数组的元素。例如,如果 array[0][0] 等于 array[0][1],则想要 return 一个布尔值。我认为查看两个元素是否不相等会更容易。所以

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])

我要么得到错误的错误,要么得到编译器错误。

编辑:我收到的 false false 是在使用 == 时我收到编译器错误 .equals

ExploreMatrix.java:89: error: int cannot be dereferenced

而当使用 Arrays.equals

ExploreMatrix.java:89: error: no suitable method found for equals(int,int)

基元(例如int)通过== and/or !=(视情况而定)的值进行测试。您需要在循环体中定义 rowAlike (否则它不会在下一行重置)。在 col == size - 1 时访问 col + 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);
    }
}
if(!square[row][col].equals(square[row][nextNum]))

如果您的 squareString 的数组,上面的代码将起作用。

很遗憾,您没有在问题中定义 square

使用 == 来比较原始类型,例如 int.equals 来比较 String

您的代码中存在多个问题:

  • 最有可能发生 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 的数组有 指数 0x-1.

  • 你递增 row 两次(for-循环和 SYSOUT

  • I know that == will compare the memory locations

    这不适用于基本类型。根据您的异常,您尝试比较 int 值。去 ==.

  • 勾选JavaDoc of Arrays#equals() method