2016-11-21 2 views
-2

。私はプレーヤーの切り替えのためにまだフリップフロッターを持っていないことを知っている。私はこれを理解することはできません。あなたがTTTPlayerオブジェクトをインスタンス化する必要がmainのjava.lang.NullPointerExceptionの三目並べプログラム

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]); 

    } 
} 
+1

私も元々重複としてこれを閉じますが、根本的な原因は、実際に私は、この原因はで答え見ることができなかったmain' 'から彼のクラスをインスタンス化しないことによって引き起こされ@henry二重。 –

+0

@ScaryWombat私はまだそれが重複していると思います。変数を初期化してそれらをすべてリストすることができない多くの理由があります。根本的な問題は、通常、点検またはデバッガの起動によって診断するのが容易です。 – Henry

答えて

2

。また、クラスメソッドを非静的にします。

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

public static void inputMethod() -> public void inputMethod() 
+1

またボード[i] [j]のように見える。等価(currentPlayer)はボード[i] [j] = currentPlayerにする必要があります –

+0

@JeremyKahan私はあなたが正しいと思います。私は彼のすべてのコードをデバッグしていません。 –

+0

ありがとう、私は本当に静的な静的な宗派は私の地獄を混乱させるので、Javaには本当に新しいです。しかし、私はオブジェクトでそれらを呼び出す必要があると思う、もう一度おかげで! :p – HardlyTheJavaLegend

関連する問題