首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为什么这段程序编译成功,但运行抛出错误

2011-12-31 
为什么这段程序编译成功,但运行抛出异常?publicclasstrigon2{publicstaticvoidmain(String[]args){int[][]

为什么这段程序编译成功,但运行抛出异常?
public   class   trigon2{
      public   static   void   main(String[]   args){
            int[][]   triarray=new   int[10][];
            for(int   i=0;i <triarray.length;i++){
                  triarray[i]=new   int[++i];
            }
            int   k=0;
            for(int   i=0;i <triarray.length;i++){
                  for(int   j=0;j <triarray[i].length;j++){
                        j=0;
                        triarray[i][j]=++k;
                        System.out.println(triarray[i][j]);
                  }  
            }
      }
}
//运行后,抛出异常:

//Exception   in   thread   "main "   java.lang.NullPointerException
//                 at   trigon2.main(trigon2.java:9)

[解决办法]
triarray[i]没有初始化吧
[解决办法]
原因在于对 ++ 的误用。第一个 for 循环结束后,数组的结果实际变成了:
triarray[0] = [I@de6ced
triarray[1] = null
triarray[2] = [I@c17164
triarray[3] = null
triarray[4] = [I@1fb8ee3
triarray[5] = null
triarray[6] = [I@61de33
triarray[7] = null
triarray[8] = [I@14318bb
triarray[9] = null

建议楼主避免使用 ++i,而用更加清晰易懂的 i+1。
另外,j=0 那一句会造成无限循环。

最后楼主想得到的是不是这个:
triarray[0][0]=1
triarray[1][0]=2
triarray[1][1]=3
triarray[2][0]=4
triarray[2][1]=5
triarray[2][2]=6
triarray[3][0]=7
triarray[3][1]=8
triarray[3][2]=9
triarray[3][3]=10
triarray[4][0]=11
triarray[4][1]=12
triarray[4][2]=13
triarray[4][3]=14
triarray[4][4]=15
triarray[5][0]=16
triarray[5][1]=17
triarray[5][2]=18
triarray[5][3]=19
triarray[5][4]=20
triarray[5][5]=21
triarray[6][0]=22
triarray[6][1]=23
triarray[6][2]=24
triarray[6][3]=25
triarray[6][4]=26
triarray[6][5]=27
triarray[6][6]=28
triarray[7][0]=29
triarray[7][1]=30
triarray[7][2]=31
triarray[7][3]=32
triarray[7][4]=33
triarray[7][5]=34
triarray[7][6]=35
triarray[7][7]=36
triarray[8][0]=37
triarray[8][1]=38
triarray[8][2]=39
triarray[8][3]=40
triarray[8][4]=41
triarray[8][5]=42
triarray[8][6]=43
triarray[8][7]=44
triarray[8][8]=45
triarray[9][0]=46
triarray[9][1]=47
triarray[9][2]=48
triarray[9][3]=49
triarray[9][4]=50
triarray[9][5]=51
triarray[9][6]=52
triarray[9][7]=53
triarray[9][8]=54
triarray[9][9]=55
[解决办法]
public class Test {
public static void main(String[] args) {
int[][] triarray = new int[10][];
for (int i = 0; i < 10; i++) {
triarray[i] = new int[i];
}

int k = 0;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < triarray[i].length; j++) {


triarray[i][j] = ++k;
System.out.println( "triarray[ "+i+ "][ "+j+ "] = "+triarray[i][j]);
}
}
}

}
[解决办法]
二数组只初始了1维
int[][] triarray=new int[10][];
这个triarray[i].length当然就为NullPointerException咯.
[解决办法]
public class c
{
public static void main(String [] args)
{
int num=1;

for(int i=1;i <=4;i++)
{
for(int j=1;j <=i;j++)
{
System.out.print(num+ " ");
num++;
}
System.out.println();
}
}
}
[解决办法]
triarray2[j++]=j+1;
问题出在这一行

热点排行
Bad Request.