A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© beiji 中级黑马   /  2015-10-20 10:15  /  353 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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多遍,都看不出原因

2 个回复

倒序浏览
本帖最后由 格子伞 于 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
复制代码

点评

6666  发表于 2015-10-20 17:44
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马