**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
19小时前关门了。
改进这个问题
首先感谢所有愿意阅读这些代码并帮助我的人。
我有一个hashmap<string,square>可以简单地将一个板打印到控制台,如下所示:
public class Square {
private char status;
public Square(String statusp) {
if(statusp.equals("empty")) {
this.status = '.';
}else if(statusp.equals("black")) {
this.status = 'X';
}else if(statusp.equals("white")) {
this.status = 'O';
}else {
System.out.println("ERROR: status can only be: empty, black, white");
}
}
public char getStatus() {
return status;
}
}
public class Board {
public HashMap<String, Square> board;
public Board() {
board = new HashMap<String, Square>();
Square empty = new Square("empty");
Square black = new Square("black");
Square white = new Square("white");
board.put("a1", empty);
board.put("a2", empty);
board.put("a3", empty);
board.put("a4", empty);
board.put("a5", empty);
board.put("a6", empty);
board.put("a7", empty);
board.put("a8", empty);
board.put("b1", empty);
board.put("b2", empty);
board.put("b3", empty);
board.put("b4", empty);
board.put("b5", empty);
board.put("b6", empty);
board.put("b7", empty);
board.put("b8", empty);
board.put("c1", empty);
board.put("c2", empty);
board.put("c3", empty);
board.put("c4", empty);
board.put("c5", empty);
board.put("c6", empty);
board.put("c7", empty);
board.put("c8", empty);
board.put("d1", empty);
board.put("d2", empty);
board.put("d3", empty);
board.put("d4", white);
board.put("d5", black);
board.put("d6", empty);
board.put("d7", empty);
board.put("d8", empty);
board.put("e1", empty);
board.put("e2", empty);
board.put("e3", empty);
board.put("e4", black);
board.put("e5", white);
board.put("e6", empty);
board.put("e7", empty);
board.put("e8", empty);
board.put("f1", empty);
board.put("f2", empty);
board.put("f3", empty);
board.put("f4", empty);
board.put("f5", empty);
board.put("f6", empty);
board.put("f7", empty);
board.put("f8", empty);
board.put("g1", empty);
board.put("g2", empty);
board.put("g3", empty);
board.put("g4", empty);
board.put("g5", empty);
board.put("g6", empty);
board.put("g7", empty);
board.put("g8", empty);
board.put("h1", empty);
board.put("h2", empty);
board.put("h3", empty);
board.put("h4", empty);
board.put("h5", empty);
board.put("h6", empty);
board.put("h7", empty);
board.put("h8", empty);
}
public void printBoard() {
System.out.println("+----------------+");
System.out.println("| abcdefgh |");
System.out.println("| 1 " + board.get("a1").getStatus() + "" + board.get("b1").getStatus() + board.get("c1").getStatus() + board.get("d1").getStatus()
+ board.get("e1").getStatus() + board.get("f1").getStatus() + board.get("g1").getStatus() + board.get("h1").getStatus() + " 1 |");
System.out.println("| 2 " + board.get("a2").getStatus() + "" + board.get("b2").getStatus() + board.get("c2").getStatus() + board.get("d2").getStatus()
+ board.get("e2").getStatus() + board.get("f2").getStatus() + board.get("g2").getStatus() + board.get("h2").getStatus() + " 2 |");
System.out.println( "| 3 " + board.get("a3").getStatus() + "" + board.get("b3").getStatus() + board.get("c3").getStatus() + board.get("d3").getStatus()
+ board.get("e3").getStatus() + board.get("f3").getStatus() + board.get("g3").getStatus() + board.get("h3").getStatus() + " 3 |");
System.out.println("| 4 " + board.get("a4").getStatus() + "" + board.get("b4").getStatus() + board.get("c4").getStatus() + board.get("d4").getStatus()
+ board.get("e4").getStatus() + board.get("f4").getStatus() + board.get("g4").getStatus() + board.get("h4").getStatus() + " 4 |");
System.out.println("| 5 " + board.get("a5").getStatus() + "" + board.get("b5").getStatus() + board.get("c5").getStatus() + board.get("d5").getStatus()
+ board.get("e5").getStatus() + board.get("f5").getStatus() + board.get("g5").getStatus() + board.get("h5").getStatus() + " 5 |");
System.out.println("| 6 " + board.get("a6").getStatus() + "" + board.get("b6").getStatus() + board.get("c6").getStatus() + board.get("d6").getStatus()
+ board.get("e6").getStatus() + board.get("f6").getStatus() + board.get("g6").getStatus() + board.get("h6").getStatus() + " 6 |");
System.out.println("| 7 " + board.get("a7").getStatus() + "" + board.get("b7").getStatus() + board.get("c7").getStatus() + board.get("d7").getStatus()
+ board.get("e7").getStatus() + board.get("f7").getStatus() + board.get("g7").getStatus() + board.get("h7").getStatus() + " 7 |");
System.out.println("| 8 " + board.get("a8").getStatus() + "" + board.get("b8").getStatus() + board.get("c8").getStatus() + board.get("d8").getStatus()
+ board.get("e8").getStatus() + board.get("f8").getStatus() + board.get("g8").getStatus() + board.get("h8").getStatus() + " 8 |");
System.out.println("| abcdefgh |");
System.out.println("+----------------+");
}
}
它基本上打印了这个:
其思想是,当用户给出的输入值等于hashmap的一个键时,该键的值将变为方形黑色或方形白色(x或o),并且只有当用户输入的键还没有方形黑色或方形白色的值时,该值才会改变。第一张支票行得通,但第二张支票好像不行。它总是覆盖该值,即使它已经是x或o。
要执行上述检查,我有以下代码:
System.out.println(p1.getName().toUpperCase() + ", please enter your move:");
String move = io.readInput();
//check if the hashmap contains the key of move
if (board.board.containsKey(move)) {
//check if the value of key move isnt equal to Square black or white (X or O)
if(board.board.get(move) != black || board.board.get(move) != white ) {
board.board.replace(move, black);
}else {
System.out.println("that spot is already taken");
}
board.printBoard();
}
我试着把| |改成&&但是没有结果。我也试过:
if(board.board.get(move) == empty) {
board.board.replace(move, black);
board.printBoard();
}else {
System.out.println("that spot is already taken");
}
但是不管我输入什么,它总是返回else语句,if语句永远不会为真,即使move等于空。
知道为什么第二个if语句不起作用吗?它给我零错误。
1条答案
按热度按时间yvfmudvl1#
有两个问题:if总是真的,因为empty不同于black和white,您需要获得board位置的状态并将其与“empty”进行比较,比如