2017-03-02 92 views
-2

代碼創建對象數組和toString方法。二維數組對象返回null

import java.util.Arrays; 
public class TicTacToeBoard extends BoardClass{ 

    private int turns; 

    private XOClass[][] a; 

    public TicTacToeBoard(int rows,int cols){ 
     super(rows,cols); 
     XOClass[][]a = new XOClass[rows][cols]; 
     turns = 0; 
    } 
    public String toString(){ 
     return (Arrays.deepToString(a)); 
    } 
} 

對象類


public class XOClass{ 
    private String name; 
    private static int turn=0; 

    public XOClass(){ 
     if (turn==0){ 
      this.name = "-"; 
     } 
     if (turn==1){ 
      this.name = "X"; 
     } 

     else{ 
      this.name = "O"; 

     } 
    } 

演示類

public class play { 
    public static void main(String[] args){ 
     TicTacToeBoard tac = new TicTacToeBoard(3,3); 
     System.out.println(tac); 

    } 
} 

當調用類播放返回null作爲有諾斯在數組中,我在做什麼我的代碼錯了。

+0

你不能正確縮進它。也許你應該先解決。 – khelwood

+0

之後,在您的構造函數中將'XOClass [] [] a = new XOClass [rows] [cols];''更改爲'a = new XOClass [rows] [cols];'因爲您要分配給成員變量聲明一個新的局部變量。 – khelwood

回答

1

在您的代碼:

XOClass[][]a = new XOClass[rows][cols];

  1. 您初始化新XOClass它的唯一的方法,當該方法到底是不信任。 改變,要

    a = new XOClass[rows][cols];

  2. 這意味着已創建的二維陣列,以「行」的行。在第一行有'cols'列。 並且所有行都爲空。 現在你應該創建一個像行:

a[0] = new XOClass[cols];

然後

a[0][0]=new XOClass();