黑马程序员技术交流社区

标题: 杨辉三角 [打印本页]

作者: 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 编辑
  1.     第……不加那个空行算,第7行:外层的for循环中,数组yh的元素个数为i+1,不是i+2。比如当i=0时打印第一行,打印出来的数组第一行中有i+1=1个元素,而不是i+2=2个元素。改为:yh[i]=new int[i+1];
复制代码


  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