java.lang.NullPointerException程序

java.lang.NullPointerException程序,java,arrays,nullpointerexception,Java,Arrays,Nullpointerexception,我不断得到: Exception in thread "main" java.lang.NullPointerException at TTTPlayer.setBoard(TTTPlayer.java:55) at TTTPlayer.inputMethod(TTTPlayer.java:35) at TTTPlayer.main(TTTPlayer.java:23) 我的程序是一个tictactoe程序,我试图将person输入的值赋给相应的数组索引,然后可以打印出来。我

我不断得到:

Exception in thread "main" java.lang.NullPointerException
at TTTPlayer.setBoard(TTTPlayer.java:55)    
at TTTPlayer.inputMethod(TTTPlayer.java:35)     
at TTTPlayer.main(TTTPlayer.java:23)
我的程序是一个tictactoe程序,我试图将person输入的值赋给相应的数组索引,然后可以打印出来。我知道我还没有一个可以切换球员的触发器。不过我想不出来

import java.util.*;

public class TTTPlayer {

    public static String[][] board;
    public static String currentPlayer;

    public TTTPlayer() {
        currentPlayer = "x";
        board = new String[3][3];
        board[0][0] = "1";
        board[0][1] = "2";
        board[0][2] = "3";
        board[1][0] = "4";
        board[1][1] = "5";
        board[1][2] = "6";
        board[2][0] = "7";
        board[2][1] = "8";
        board[2][2] = "9";
    }

    public static void main(String[] args) {
        inputMethod();
    }

    public static void inputMethod()
    {
        TicTacToeMain.printBoard();
        Scanner Input = new Scanner(System.in);
        System.out.println("Enter what square you would like to place in.");
        String choice = Input.nextLine();

        if(choice.equals("1")||choice.equals("2")||choice.equals("3")||choice.equals("4")||choice.equals("5")||choice.equals("6")||choice.equals("7")||choice.equals("8")||choice.equals("9"))
        {   
            setBoard(choice);

        }   
        else
        {   
            System.out.println("That is not a valid choice, please retry.");
            inputMethod();

        }   

    }
    public static void setBoard(String choice)
    {
        String choice1 = choice;

         for (int i = 0; i < 3; i++) {


            for (int j = 0; j < 3; j++) {

               if(board[i][j].equals(choice1)){
                  board[i][j].equals(currentPlayer);
                  printBoard();

               }

            }
        }
        //System.out.println(choice1);  
    }

    public static void printBoard()
    {  
       System.out.println(board[0][0]+" | "+board[1][0]+" | "+board[2][0]);
       System.out.println("——|———|——");
       System.out.println(board[0][1]+" | "+board[1][1]+" | "+board[2][1]);
       System.out.println("——|———|——");
       System.out.println(board[0][2]+" | "+board[1][2]+" | "+board[2][2]);

    }
}
import java.util.*;
公共类TTTPlayer{
公共静态字符串[][]板;
公共静态字符串播放器;
公共TTTPlayer(){
currentPlayer=“x”;
board=新字符串[3][3];
板[0][0]=“1”;
板[0][1]=“2”;
板[0][2]=“3”;
董事会[1][0]=“4”;
董事会[1][1]=“5”;
董事会[1][2]=“6”;
董事会[2][0]=“7”;
董事会[2][1]=“8”;
董事会[2][2]=“9”;
}
公共静态void main(字符串[]args){
inputMethod();
}
公共静态void inputMethod()
{
TicTacToeMain.printBoard();
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入您要放置在哪个方块中。”);
字符串选择=Input.nextLine();
如果(选择。等于(1)选择。等于(2)选择。等于(3)选择。等于(4)选择。等于(5)选择。等于(6)选择。等于(7)选择。等于(8)选择。等于(9)
{   
挫折(选择);
}   
其他的
{   
System.out.println(“这不是一个有效的选择,请重试。”);
inputMethod();
}   
}
公共静态空白收进板(字符串选择)
{
字符串选择1=选择;
对于(int i=0;i<3;i++){
对于(int j=0;j<3;j++){
if(board[i][j].等于(choice1)){
板[i][j]。等于(当前玩家);
印制板();
}
}
}
//系统输出打印LN(选项1);
}
公共静态无效打印板()
{  
System.out.println(板[0][0]+“|”+板[1][0]+“|”+板[2][0]);
System.out.println(“--|--|--”号);
System.out.println(板[0][1]+“|”+板[1][1]+“|”+板[2][1]);
System.out.println(“--|--|--”号);
System.out.println(板[0][2]+“|”+板[1][2]+“|”+板[2][2]);
}
}

main
中,您需要实例化
TTTPlayer
对象。还要使类方法成为非静态的

public static void main(String[] args) {
    TTTPlayer player = new TTTPlayer ();
    player.inputMethod();
}


另外,它看起来像board[i][j]。equals(currentPlayer)应该是board[i][j]=currentPlayer@JeremyKahan我想你是对的。我还没有调试所有的代码。非常感谢,我对java真的很陌生,所以静态和非静态的命名让我很困惑。但我想我需要给他们打个电话,再感谢一次p@henry我最初也以重复的方式关闭了它,但根本原因是实际上没有从
main
实例化他的类,我看不到这个原因在重复中得到了回答。@ScaryWombat我仍然认为它是重复的。一个变量没有初始化以列出所有变量的原因有很多。根本问题通常很容易通过检查或启动调试器来诊断。
public static void inputMethod() -> public void inputMethod()