简单java程序运行时出错!

来源:百度知道 编辑:UC知道 时间:2024/06/18 16:15:11
一实训题编译通过,运行错:
编写程序,将一个一维数组中的所有整数的
约数求出并按顺序存入一个二维数组中,然后输出.
class Si{
static int [] a={1,34,45,3,5};
static int [][] b=new int[a.length][];

static void Yue(){

for(int j=0,lie=0;j<a.length;j++)
{b[j][lie]=a[j];
for(int i=2;i<=a[j];i++)
if(a[j]%i==0)
{b[j][lie+1]=i;
lie++;}
}

for(int h=0;h<a.length;h++)
for(int l=0;l<b[h].length;l++)
System.out.print(b[h][l]+" ");
System.out.println();
}

public static void main(String args[]){
Yue();
}
}

F:\>java Si
Exception in thread "main" java.lang.NullPointerException
at Si.Yue(Si.java:8)
at Si.main(Si.java:24)
我已经做好了,如下,现在还想改进点:当从键盘输入的数有0的时候,就打印出信息。
如:java 6 8 0 9
6 3 2 1
8 4 2 1
零的约数无意义!
9 3 1
怎么搞?注意是在相应的地方打印信息!

class Si{
publ

你那个b[j][lie]意思是第一列吧,第一列是空啊,还没分配空间呢啊
static int [][] b=new int[a.length][];此句之后b[0]到b[a.length]都是空啊,没法放东西啊

class Si {
public static void main(String args[]) {

int a[] = new int[args.length];
for (int i = 0; i < args.length; i++)
a[i] = Integer.parseInt(args[i]);

int[][] b = new int[a.length][];

for (int j = 0, i, l; j < a.length; j++) {
int lie = 0;
// int lie=0,i,l;

for (i = a[j]; i > 0; i--) {

if (a[j] % i == 0)
lie++;
}

b[j] = new int[lie]; // 注意:一定要先给数组初始化之后再付值
for (i = a[j], l = 0; i > 0; i--)
if (a[j] % i == 0) {
b[j][l] = i;
l++;
}

}

for (int h = 0; h < b.length; h++) {

if(b[h].length == 0) {
System.out.println("零的约数无意义!");//如果是0的话,对应的b[h]那行应该没有元素
continue;

}

f