比较 int 数组元素值 Java



试图比较数组的元素。例如,如果数组 [0][0] 等于数组 [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

探索矩阵.java:89:错误:int 无法取消引用

当使用数组时,等于

探索矩阵.java:89:错误:找不到适合 equals(int,int) 的方法

基元(如int)通过带有==和/或!=的值进行测试(视情况而定)。您需要在循环体中定义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具有的大小数组指数0 x-1 .

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

  • 我知道==会比较内存位置

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

  • 检查 JavaDoc 的 Arrays#equals() 方法。

相关内容

  • 没有找到相关文章

最新更新