我也不知道咋描述我用的数组
大家看看程序吧,结果异常,因为我的赋值没有成功,高手给看看吧,感激不尽啊!!
public class Test
{
    private Port[] port;
    
        public  Test(int x,int[] y)
        {
                port = new Port[x];

for(int i = 0;i < port.length;i++)
    {
port[i] = new Port(); //定义第i个端口
int kk = y[i];     //第i个端口的消息数量
port[i].msg = new Msg[kk];//定义第i个端口的消息数组

    for(int j = 0;j < port[i].msg.length;j++)
       {
   port[i].msg[j].msgNum = j;//给第i个端口的第j条消息的消息号赋值
    }
    
    }        }
        public static void main(String[] args)
        {
                int x=2;//两个端口
                int[] y={2,3};//第一个端口有两条消息,第二个端口有三条消息
             Test test = new Test(x,y);
                System.out.println(test.port[0].msg[1].msgNum);//输出        }}/*Msg类*/class Msg //消息
{
         int msgNum;//消息号
    }
/*Port类*/
class Port //端口
    {
         Msg[] msg;//消息数组(一个端口有多条消息,所以定义成数组)
    }

解决方案 »

  1.   

      port[i].msg = new Msg[kk];// 定义第i个端口的消息数组你这条在new 了以后并没有对port[i].msg 这个长度为2的数组的数组成员进行初始化,
    所以出了NullException
      

  2.   

    可以改成
    port[i].msg[j]= new Msg();
    port[i].msg[j].msgNum = j;// 给第i个端口的第j条消息的消息号赋值
      

  3.   

    有点乱 port[i].msg = new Msg[kk];//定义第i个端口的消息数组 
    问题在这   这里并没有创建Msg数组,只是给它指定了大小……需在此之后加一下代码:
    for(int m = 0; m < kk;m++){
        port[i].msg[m] = new Msg();
    }