Java杨辉三角代码有问题

二维数组

package day3;
//1
//11
//121
//1331
//14641
//15101051
//yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j]
public class text3 {
    public static void main(String[] args){
        int yanghui[][]=new int[10][];
        //初始化二维数组
        for(int i=0;i<yanghui.length;i++){
            yanghui[i]=new int[i+1];
        }
        
        for(int i=0;i<yanghui.length;i++){
            for (int j=0;j<yanghui[i].length;j++){
                if(j==0||j==yanghui[i].length){
                yanghui[i][0]=yanghui[i][i]=0;
                }
                else{
                    yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j];

                }
            }
        }

        
        for(int i=0;i<yanghui.length;i++){
            for(int j=0;j<yanghui[i].length;j++){
                System.out.print(yanghui[i][j]+" ");
            }
            System.out.println();
        }
    }
}

杨辉三角形:

 public static void main(String[] args) {
        //从控制台读取将要输入的数字,
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入杨辉三角的层数:");
        int n = sc.nextInt();//n是杨辉三角的层数
         
        //定义一个nxn的二维数组用于存储杨辉三角中每个位置的值
        int[][] yanghui = new int[n][n];
        // 初始化第一列和对角线上的值
        for (int i = 0; i < n; i++) {
            yanghui[i][0] = 1;//第一列的值全是1
            yanghui[i][i] = 1;//对角线上的值全是1
        }
        // 计算每个数的值
        for (int i = 2; i < n; i++) {//从第二行开始循环,循环n-1次
            for (int j = 1; j < i; j++) {//从第1列开始循环,循环i-1次,因为第i行只有i-1列
                yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j]; //第i行第j列的值=第i-1行第j-1列的值+第i-1行第j列的值,
            }
        }
        // 输出杨辉三角
        for (int i = 0; i < n; i++) {//共n行,循环n次
            for (int j = 0; j <= i; j++) {//第i行有i,所以循环i次,比如,第一行有1列
                System.out.print(yanghui[i][j] + " ");//输出一个值,以空格隔开
            }
            System.out.println();//每输出完一行数字后换行,继续输出下一行
        }
    }

运行结果:

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/251726
  • 你也可以参考下这篇文章:Java二维数组的三种初始化方式
  • 除此之外, 这篇博客: java二维数组中的 不规则数组 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在java中允许不规则数组存在,也就是第一行可以有3个元素,第二行有10个...

    //int[][] arr = new int[][3];错误,java中不允许省略行
    //原因:因为arr.length的长度是行的个数,因此不能省略
    int[][] arr = new int[3][];//正确,java中可以省略列

    也是因为java中允许省略列的原因,造就了它允许有不规则数组的存在。

    由于没有分配列个数,因此array中的三个元素array[0]、array[1]、array[2]都是null,因此在使用array[i].length时就会包空指针异常,

  • 您还可以看一下 CSDN讲师老师的Java数据结构与算法面试实战课课程中的 答疑小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^