Java HashMap出人意料地为;空";

Java HashMap出人意料地为;空";,java,Java,我正在为我的Java课程做一个项目。我写了一个TicTacToe程序,但我没有检查所有的方法,只检查了put方法和sort方法。我有一个空哈希映射,而不是其中的1 这是我在控制台中看到的: Input your column 1 Input your row 1 null(ticTacToe.toConsole();) 哪里有错误 Tictaoe测试等级: package TicTac; import java.util.Scanner; public class TicTacToeTes

我正在为我的Java课程做一个项目。我写了一个TicTacToe程序,但我没有检查所有的方法,只检查了put方法和sort方法。我有一个空哈希映射,而不是其中的1

这是我在控制台中看到的:

Input your column
1
Input your row
1
null(ticTacToe.toConsole();)

哪里有错误

Tictaoe测试等级:

package TicTac;

import java.util.Scanner;

public class TicTacToeTest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        TicTacToe ticTacToe = new TicTacToe();
        System.out.println("Input your column");
        int column = scanner.nextInt();
        System.out.println("Input your row");
        int row = scanner.nextInt();
        ticTacToe.selection(column,row);
        ticTacToe.toConsole();
     }
}
和主TicTacToe类:

package TicTac;

import java.util.ArrayList;
import java.util.HashMap;

public class TicTacToe {
     HashMap<Integer, String> board = new HashMap<>();
     public void selection(int column, int row) {
         String xOrO = "x";
         if (column == 1 && row == 1) {
         board.put(1,xOrO);
        } else if (column == 1 && row == 2) {
            board.put(2,xOrO);
        } else if (column == 1 && row == 3) {
            board.put(3,xOrO);
        } else if (column == 2 && row == 1) {
            board.put(4,xOrO);
        } else if (column == 2 && row == 2) {
            board.put(5,xOrO);
        } else if (column == 2 && row == 3) {
            board.put(6,xOrO);
        } else if (column == 3 && row == 1) {
            board.put(7,xOrO);
        } else if (column == 3 && row == 2) {
            board.put(8, xOrO);
        } else if (column == 3 && row == 3) {
            board.put(9,xOrO);
        }
         else {
            System.out.println("Wrong data");
        }
    }

     public void checker() {
        for (int i = 1; i < 2; i++) {
             if (board.get(1).equals(board.get(2)) && 
 board.get(2).equals(board.get(3))){
            System.out.println(board.get(1) + " player won!");
        } else if (board.get(4).equals(board.get(5)) && board.get(5).equals(board.get(6))){
            System.out.println(board.get(4) + " player won!");
        } else if (board.get(7).equals(board.get(8)) && board.get(8).equals(board.get(9))) {
            System.out.println(board.get(7) + " player won!");
        } else if (board.get(1).equals(board.get(4)) && board.get(4).equals(board.get(7))) {
            System.out.println(board.get(1) + " player won!");
        } else if (board.get(2).equals(board.get(5)) && board.get(5).equals(board.get(8))) {
            System.out.println(board.get(2) + " player won!");
        } else if (board.get(3).equals(board.get(6)) && board.get(6).equals(board.get(9))) {
            System.out.println(board.get(3) + " player won!");
        } else if (board.get(1).equals(board.get(5)) && board.get(5).equals(board.get(8))) {
            System.out.println(board.get(1) + " player won!");
        } else if (board.get(3).equals(board.get(5)) && board.get(5).equals(board.get(7))) {
            System.out.println(board.get(3) + " player won!");
        }
    }
}

public void toConsole(){
    for (int i = 0; i < board.size(); i++) {
        System.out.println(board.get(i));
    }
}

}
package-TicTac;
导入java.util.ArrayList;
导入java.util.HashMap;
公共类Tictatcoe{
HashMap board=新的HashMap();
公共空白选择(整数列,整数行){
字符串xOrO=“x”;
if(列==1&&行==1){
董事会决议(1,xOrO);
}else if(列==1和行==2){
董事会决议(2,xOrO);
}else if(列==1和行==3){
董事会主席(3,xOrO);
}else if(列==2&&row==1){
董事会决议(4,xOrO);
}else if(列==2&&row==2){
董事会决议(5,xOrO);
}else if(列==2和行==3){
董事会主席(6,xOrO);
}else if(列==3&&row==1){
董事会主席(7,xOrO);
}else if(列==3和行==2){
董事会主席(8,xOrO);
}else if(列==3&&行==3){
董事会表决权(9,xOrO);
}
否则{
System.out.println(“错误数据”);
}
}
公共作废检查器(){
对于(int i=1;i<2;i++){
如果(board.get(1).等于(board.get(2))&&
board.get(2).equals(board.get(3))){
System.out.println(board.get(1)+“玩家赢了!”);
}else if(board.get(4.equals)(board.get(5))和&board.get(5.equals)(board.get(6))){
System.out.println(board.get(4)+“玩家赢了!”);
}else if(board.get(7.equals)(board.get(8))和&board.get(8.equals)(board.get(9))){
System.out.println(board.get(7)+“玩家赢了!”);
}else if(board.get(1.equals)(board.get(4))和&board.get(4.equals)(board.get(7))){
System.out.println(board.get(1)+“玩家赢了!”);
}else if(board.get(2).equals(board.get(5))和&board.get(5).equals(board.get(8))){
System.out.println(board.get(2)+“玩家赢了!”);
}else if(board.get(3.equals)(board.get(6))和&board.get(6.equals)(board.get(9))){
System.out.println(board.get(3)+“玩家赢了!”);
}else if(board.get(1).equals(board.get(5))和&board.get(5).equals(board.get(8))){
System.out.println(board.get(1)+“玩家赢了!”);
}else if(board.get(3.equals)(board.get(5))和&board.get(5.equals)(board.get(7))){
System.out.println(board.get(3)+“玩家赢了!”);
}
}
}
public-void-toConsole(){
对于(int i=0;i
toConsole()
函数中,有一个从索引0开始的循环。此时板大小为1。因此循环打印出board.get(0)的结果并结束。

您的toConsole方法逻辑不正确。您正试图从
HashMap
获取
0
键处的元素,而
HashMap
1
键处有对象

更改为如下所示的console方法:

public void toConsole() {
        for(Entry<Integer, String> entry : board.entrySet()) {
           System.out.println("key = "+entry.getKey() + ", Value = "+entry.getValue());
        }

    }
public void toConsole(){
for(条目:board.entrySet()){
System.out.println(“key=“+entry.getKey()+”,Value=“+entry.getValue());
}
}

请阅读有关HashMap实现的一些基础知识,网址为

程序的输入是什么,控制台上的输出是什么?此外,字符串应该用双引号表示。然后,例如board.put(9,xOrO);应改为董事会。put(9,“xOrO”);你犯了什么样的错误?输入错误和与错误关联的代码。你不能期望人们通读整个代码,然后告诉你它有什么问题……我的循环中有这样一个问题Ifor(inti=0;i<1;i++)。变量i在第一次迭代中为0。然后循环结束,因为在下一次迭代中i==1。