int[][] SM = new int[s[0].length][];
for(j=0; j<s[0].length; j++){
i = 0;
k = 0;
while(i<20){
if(s[i][j] != -1){
SM[j][k++] = s[i][j];
}
i++;
}
}
这里定义的SM数组,只有行数,没定义列数,因为每一行可能列数不一样。但是这样定义,在运行是会抛出nullpointerexception, 请问对于这样的问题数组应该怎么定义啊?
for(j=0; j<s[0].length; j++){
i = 0;
k = 0;
while(i<20){
if(s[i][j] != -1){
SM[j][k++] = s[i][j];
}
i++;
}
}
这里定义的SM数组,只有行数,没定义列数,因为每一行可能列数不一样。但是这样定义,在运行是会抛出nullpointerexception, 请问对于这样的问题数组应该怎么定义啊?
int[][] SM = new int[10][]; 的意思是建立一个指向10数组的引用数组
要赋值的时候得先 new int[10],再将new的数组赋给SM
以下代码供参考: int[][] SM = new int[10][];
int[] sm = new int[10];
for(int i=0; i<10; ++i){
sm[i]=i+1;
}
for(int i=0; i<10; ++i){
SM[i]=sm;
}
SM[j]都没有创建,怎么能直接用?
必须先SM[j]=new int[?]之后才能用!