我从以下比较中不断获得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
。
答案 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
运算符(例如,==
,int
,long
等。但是,警告是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
据推测,如果他们全部为空,他们也都是等价的,因此第一行。下一行检查它们可能相等的唯一其他方式(它们全部不为空,但任意检查第一个单元格是否为空)。