Posted on 2006-07-12 01:04
Yemoo'S Java Blog 阅读(345)
评论(0) 编辑 收藏
今天看了书本上的杨归三角程序写法后,自己试着去写,但写完后编译总是出现一个错误.
先看代码:
1 public class YangHui{
2 public static void main(String args[]){
3 final int max=10;
4 int a[][]=new int[max][];
5 for(int i=0;i<a.length;i++){
6 int a[i]=new int[i+1];
7 }
8 a[0][0]=1;
9 for(int i=1;i<a.length;i++){
10 a[i][0]=1;
11 a[i][a[i].length-1]=1;
12 for(int j=1;j<a[i-1].length;j++){
13 a[i][j]=a[i-1][j-1]+a[i-1][j];
14 }
15 }
16
17 for(int i=0;i<a.length;i++){
18 for(int j=0;j<a[i].length;j++)
19 System.out.print(a[i][j]+"\t");
20 System.out.println();
21 }
22 }
23 }
JCreator返回如下错误信息:
--------------------------------------------------
D:\Java\JCreator\YangHui.java:6: 需要 ']'
int a[i]=new int[i+1];
^
1 错误
处理已完成。
---------------------------------------------------
开始怎么都看不出第六行有什么错误,郁闷半天之后看了课本,发现原来多了一个int.突然醒悟这个数组已经在前面声明过了,在这里写int不是重复声明吗?......真是太粗心了,不过给偶一个深刻的教训,一定注意不要范重复声明数组的错误.
删掉int之后编译通过,正确的程序是这样的:
public class YangHui{
public static void main(String args[]){
final int max=10;
int a[][]=new int[max][];
for(int i=0;i<a.length;i++){
a[i]=new int[i+1];
}
a[0][0]=1;
for(int i=1;i<a.length;i++){
a[i][0]=1;
a[i][a[i].length-1]=1;
for(int j=1;j<a[i-1].length;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++)
System.out.print(a[i][j]+"\t");
System.out.println();
}
}
}