日期:2014-05-20  浏览次数:20719 次

java程序运行问题
class  Exercise
{
public static void main(String[] args) 
{
int[][]a = new int [10][10];
for(int i = 0;i < 10;i++)
for(int j = 0;j < 10;j++)
{
if((j == 1)|(i==j))
{
a[i][j] = 1;
}

else
a[i][j] = a[i-1][j-1] + a[i-1][j];
}

for(int i= 0;i < 10; i++)
{
for(int j = 0;j < i;j++) 
System.out.printf("  ",a[i][j]);
}

 
}
}


请大神给我看看这个程序哪错了?编译能通过,但运行就出现问题了

------解决方案--------------------
引用:
引用:if((j == 1)
------解决方案--------------------
(i==j))看到这句就有问题了?
------解决方案--------------------
是什么意思?或的关系是双
------解决方案--------------------

运行时没有错误的

=================================
当 i = 0; j != 0 && j != 1时,下面的条件就不为true了。
if((j == 1)
------解决方案--------------------
(i==j))
执行else中的代码,看一下,当i = 0时, i - 1 = -1,下面的表达式就出问题了。
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
------解决方案--------------------
循环第三次  i=0  j=2 时
执行a[i][j] = a[i-1][j-1] + a[i-1][j];
会出超出索引范围的错误
------解决方案--------------------
public class Exercise {
public static void main(String[] args) {
int[][] a = new int[10][10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if ((j == 1) 
------解决方案--------------------
 (i == j)) {
a[i][j] = 1;
} else {
if ((i == 0)&&(j!=0) ){
a[i][j] = 0;

} else if ((j == 0)&&(i!=0)) {
a[i][j] = 0;

}else {
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
}
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++){
System.out.print("  "+a[i][j]);
}
System.out.println();
}

}

}