class OutNode
{
     String Order;
     String StateString;
     String SignString;
     String SenString;
     String InputString;
}class LrTable
{
     String elem;
}public class Lr1 extends WindowAdapter implements ActionListener
{
                      OutNode[] Out = new OutNode[20];
    final int R = 13;
    final int C = 10;
    LrTable[] LrElem[] = new LrTable[R][C];
public void DealLrTable()//点击输入按钮时候,执行的函数
 {
     int j = 1;
     int h = 0;
     int k = j;
     String[] S = ta1.getText().split("\n");
     for(int i=0;i<13+1;i++)//13+1中的13是状态数目,以后可以修改
       {
                  for(;j<=8+1+h;j++)
  {
     LrElem[i][k].elem = S[i].substring(j*3,j*3+3);
   }
   k++;
   h = j;
   j = j+1; 
       }
 }}
这就是主要的相关的程序。(其他部分,不影响这,所以,没有给出)
这里,,我编译已经通过了,但是在运行的时候,老是提示LrElem[i][k].elem 没有相应的内存空间
希望,各路高手云集,来解决下这个问题先谢谢了。

解决方案 »

  1.   

    数组越界的话,
    系统应该给出的是ArrayIndexOutOfBoundsException
    但是现在系统给出点是
    NullPointerException错误,但是也要谢谢yangbc(土豆块) 因为,这样,运行下去,会有数组越界
      

  2.   

    已经确定就是LrElem[i][k].elem = S[i].substring(j*3,j*3+3);这个语句中的
    LrElem[i][k].elem没有赋于其内存空间。问哈,大家有什么好的建议,
    来修改这个地方的错误吗?
      

  3.   

    可以知道的是你的数组没有初始化,你的数组是一个包装类类型的数组,里面的元素是这种包装类的对象的引用,如果不初始化而直接对元素的属性赋值是不行的,可以看一下我的测试        LrTable le=new LrTable();
            le.elem="yang11";
            
            LrElem[1][1].elem="yang10";//NullPointerException
            
            LrElem[1][1] =le;
            System.out.println("LrElem[1][1]="+LrElem[1][1]);
            System.out.println("LrElem[1][1].elem="+LrElem[1][1].elem);
            
            LrElem[1][1].elem="yang12";
            System.out.println("LrElem[1][1]="+LrElem[1][1]);
            System.out.println("LrElem[1][1].elem="+LrElem[1][1].elem);
      

  4.   

    谢谢,,,, yangbc(土豆块),非常感谢,我本来搞的都已经有点头晕了,现在被你一点而醒了。太感谢了。
      

  5.   

    但是为什么要用System.out.println("LrElem[1][1]="+LrElem[1][1]);语句呢?有什么含义不?希望告诉下~`