33import java .util .ArrayList ;
44import java .util .Arrays ;
55import java .util .List ;
6+ import java .util .Objects ;
67
78import aima .core .util .datastructure .XYLocation ;
89
@@ -29,7 +30,7 @@ public String getPlayerToMove() {
2930 }
3031
3132 public boolean isEmpty (int col , int row ) {
32- return board [getAbsPosition (col , row )] == EMPTY ;
33+ return Objects . equals ( board [getAbsPosition (col , row )], EMPTY ) ;
3334 }
3435
3536 public String getValue (int col , int row ) {
@@ -45,16 +46,16 @@ public void mark(XYLocation action) {
4546 }
4647
4748 public void mark (int col , int row ) {
48- if (utility == -1 && getValue (col , row ) == EMPTY ) {
49+ if (utility == -1 && Objects . equals ( getValue (col , row ), EMPTY ) ) {
4950 board [getAbsPosition (col , row )] = playerToMove ;
5051 analyzeUtility ();
51- playerToMove = (playerToMove == X ? O : X );
52+ playerToMove = (Objects . equals ( playerToMove , X ) ? O : X );
5253 }
5354 }
5455
5556 private void analyzeUtility () {
5657 if (lineThroughBoard ()) {
57- utility = (playerToMove == X ? 1 : 0 );
58+ utility = (Objects . equals ( playerToMove , X ) ? 1 : 0 );
5859 } else if (getNumberOfMarkedPositions () == 9 ) {
5960 utility = 0.5 ;
6061 }
@@ -67,7 +68,7 @@ public boolean lineThroughBoard() {
6768 private boolean isAnyRowComplete () {
6869 for (int row = 0 ; row < 3 ; row ++) {
6970 String val = getValue (0 , row );
70- if (val != EMPTY && val == getValue (1 , row ) && val == getValue (2 , row )) {
71+ if (! Objects . equals ( val , EMPTY ) && Objects . equals ( val , getValue (1 , row )) && Objects . equals ( val , getValue (2 , row ) )) {
7172 return true ;
7273 }
7374 }
@@ -77,7 +78,7 @@ private boolean isAnyRowComplete() {
7778 private boolean isAnyColumnComplete () {
7879 for (int col = 0 ; col < 3 ; col ++) {
7980 String val = getValue (col , 0 );
80- if (val != EMPTY && val == getValue (col , 1 ) && val == getValue (col , 2 )) {
81+ if (! Objects . equals ( val , EMPTY ) && Objects . equals ( val , getValue (col , 1 )) && Objects . equals ( val , getValue (col , 2 ) )) {
8182 return true ;
8283 }
8384 }
@@ -87,11 +88,11 @@ private boolean isAnyColumnComplete() {
8788 private boolean isAnyDiagonalComplete () {
8889 boolean retVal = false ;
8990 String val = getValue (0 , 0 );
90- if (val != EMPTY && val == getValue (1 , 1 ) && val == getValue (2 , 2 )) {
91+ if (! Objects . equals ( val , EMPTY ) && Objects . equals ( val , getValue (1 , 1 )) && Objects . equals ( val , getValue (2 , 2 ) )) {
9192 return true ;
9293 }
9394 val = getValue (0 , 2 );
94- if (val != EMPTY && val == getValue (1 , 1 ) && val == getValue (2 , 0 )) {
95+ if (! Objects . equals ( val , EMPTY ) && Objects . equals ( val , getValue (1 , 1 )) && Objects . equals ( val , getValue (2 , 0 ) )) {
9596 return true ;
9697 }
9798 return retVal ;
@@ -138,7 +139,7 @@ public boolean equals(Object anObj) {
138139 if (anObj != null && anObj .getClass () == getClass ()) {
139140 TicTacToeState anotherState = (TicTacToeState ) anObj ;
140141 for (int i = 0 ; i < 9 ; i ++) {
141- if (board [i ] != anotherState .board [i ]) {
142+ if (! Objects . equals ( board [i ], anotherState .board [i ]) ) {
142143 return false ;
143144 }
144145 }
0 commit comments