2017-03-02 93 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();