比较二维数组的麻烦

时间:2017-12-07 04:45:06

标签: java arrays multidimensional-array

我从以下比较中不断获得false布尔值:

public boolean getHz1() {
    return board[0][0] == board[0][1] 
           && board[0][1] == board[0][2] 
           && board[0][0] != null 
           && board[0][1] != null 
           && board[0][2] != null;
 }

驱动程序类中的相关调用是:

do {
        System.out.println("Your turn: ");
        g1.play(s.nextInt(), s.nextInt(), s.next());
        System.out.println(g1.getHz1());
} while (g1.getHz1() == false)

" play"方法需要2个整数和一个字符串值来放入数组中,在这种情况下" x"。当我打印出board[0][0]board[0][1]board[0][2]时,所有内容都包含字符串" x",但getHz1仍会返回false

3 个答案:

答案 0 :(得分:0)

正如评论中所提到的,您应该使用col-1 col-4 col-7 col-2 col-5 col-8 col-3 col-6 col-9 方法而不是equals来比较对象。

==
如果两个对象具有相同的指针,则

public boolean getHz1() { return board[0][0] != null && board[0][1] != null && board[0][2] != null && board[0][0].equals(board[0][1]) && board[0][1].equals(board[0][2]); } 仅为==

答案 1 :(得分:0)

“==”仅用于原始类型(整数,布尔值等)。字符串是一个对象,因此使用==检查对象引用(如果String 1与String 2是同一个对象)。比较字符串时,需要使用.equals(),它会测试相等的值。

答案 2 :(得分:0)

正如其他人所提到的,您需要对对象使用[23:08:34] ✔ test.png -> before=69.25 KB after=20.1 KB reduced=49.15 KB(71%) [23:08:34] ✔ sub1/sub2/ub3/test.png -> before=69.25 KB after=20.1 KB reduced=49.15 KB(71%) [23:08:34] ✔ sub1/sub2/test.png -> before=69.25 KB after=20.1 KB reduced=49.15 KB(71%) [23:08:34] ✔ sub1/test.png -> before=69.25 KB after=20.1 KB reduced=49.15 KB(71%) (例如,String,HashMap,使用.equals创建的任何内容),以及本地数据类型的new运算符(例如,==intlong等。但是,警告是char是对象上的函数,因此首先需要确保该对象不为null。因此这种模式:

.equals

比较对象时,您还可以让if ( obj != null && obj.someFunction() ) 函数为您执行空检查:

.equals

在您的情况下,您需要检查您的对象是否为第一个,然后将对象与.equals进行适当比较:

SomeObject goodObj = new SomeObject();
SomeObject badObj = null;

if ( goodObj.equals( badObj ) )  // should work properly, no matter the state of badObj

据推测,如果他们全部为空,他们也都是等价的,因此第一行。下一行检查它们可能相等的唯一其他方式(它们全部不为空,但任意检查第一个单元格是否为空)。