黑马程序员技术交流社区
标题:
杨辉三角
[打印本页]
作者:
beiji
时间:
2015-10-20 10:15
标题:
杨辉三角
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个正整数:");
int number=sc.nextInt();
int[][] yh=new int[number][];
for(int i=0;i<number;i++){
yh[i]=new int[i+2];
for(int j=0;j<yh[i].length;j++){
if(j==0||j==yh.length-1)
yh[i][j]=1;
else
yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
System.out.print(yh[i][j]+" ");
}
System.out.println();
}
总是提示我下标越界,反复看了N多遍,都看不出原因
作者:
格子伞
时间:
2015-10-20 12:12
本帖最后由 格子伞 于 2015-10-20 12:53 编辑
第……不加那个空行算,第7行:外层的for循环中,数组yh的元素个数为i+1,不是i+2。比如当i=0时打印第一行,打印出来的数组第一行中有i+1=1个元素,而不是i+2=2个元素。改为:yh[i]=new int[i+1];
复制代码
第9行,if的条件中,j == yh.length-1,不对。yh默认代表二维数组yh[number][],在这段代码中,这个数组的长度是死的(输入个5,number就永远是5,但是不是每行的第5个元素都是1),应该跟着i走:j == yh[i].length-1,或者直接 i == j
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2