【问题标题】:Java Hashmap value check [closed]Java Hashmap值检查[关闭]
【发布时间】:2021-01-09 17:08:37
【问题描述】:

首先感谢所有愿意阅读所有这些代码并帮助我的人。

我有一个 Hashmap ,它只是将一个板打印到控制台,它如下所示:

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),并且该值仅在用户输入的键还没有 Square black 或 Square white 的值。第一次检查工作正常,但我似乎无法让第二次检查工作。它总是覆盖该值,即使它已经是 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 语句,即使 move 等于空,if 语句也永远不会为真。

知道为什么第二个 if 语句不起作用吗?它给了我零错误。

【问题讨论】:

  • 如果你使用||,它总是正确的。因为如果它是黑色的,它就不同于白色,反之亦然

标签: java if-statement hashmap


【解决方案1】:

有两个问题:if 永远为真,因为空与黑白不同,你需要获取棋盘位置的状态并将其与“空”进行比较,例如

if (board.get(move).getStatus().equals("empty")) {
    //Code here...
}

【讨论】:

    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多