JAVA语言编写杨辉三角,打印不出三角形

我的代码如下:但是打印不出三角形呀。。。请各位帮忙,程序有图片。packagecom.java;publicclassYangHui{publicstaticvoidma... 我的代码如下:但是打印不出三角形呀。。。请各位帮忙,程序有图片。package com.java;public class YangHui { public static void main(String args[]){ //先定义以一个二维数组。列比行多1,EG:第0行有一个元素。 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++){ yanghui[i][0] = yanghui[i][i] = 1; if(i > 1 && j > 0 && j < i){ yanghui[i][j] = yanghui[i-1][j]+yanghui[i-1][j-1]; } } } //二维数组遍历,打印每个数字。 for(int i = 0;i <yanghui.length;i++){ for(int j = 0; j < yanghui[i].length;j++){ System.out.println(yanghui[i][j] ); } System.out.println("\t" ); } }} 展开
 我来答
第一碗羊杂割
推荐于2018-05-09 · TA获得超过6145个赞
知道大有可为答主
回答量:1107
采纳率:80%
帮助的人:562万
展开全部

这个问题是因为题主使用了 println() 来打印每一个数字。println() 函数的名称来源于 Print Line 的简称,从名字上就可以看出,此函数会打印出一个整行。因此 println() 函数会在要打印的字符串后自动添加一个 '\n' 符号来构成一个新行。所以如果用 println() 来打印单个数字的话,每个数字在被打印出来后就会换行,这样就导致了一行只有一个数字,所有数字打印出来后排成了一个竖条。


解决方法就是用 print() 方法来替代 println() 。print() 方法仅打出你括号里给的字符串,不会额外添加任何东西,所以这个方法可以用来在一行里打出多个给定的字符串。 更改后的代码如下:

public class YangHui {
    
    public static void main(String args[]) {
        
        // 先定义以一个二维数组。列比行多 1,EG:第 0 行有一个元素。
        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++) {
                yanghui[i][0] = yanghui[i][i] = 1;

                if ((i > 1) && (j > 0) && (j < i)) {
                    yanghui[i][j] = yanghui[i - 1][j] + 
                                    yanghui[i - 1][j - 1];
                }
            }
        }

        // 二维数组遍历,打印每个数字。
        for (int i = 0; i < yanghui.length; i++) {
            
            for (int j = 0; j < yanghui[i].length; j++) {
                
                // 用 print() 方法打印数字
                System.out.print(yanghui[i][j]);
                
                // 打印完数字后打印一个 tab 来将数字隔开
                System.out.print('\t');
            }

            // 打印完一行数字后,打印一个新行并开始输出下一行数字。
            System.out.println();
        }
    }
}


这个程序的结果如下:



可见三角形的结构出现了。但是这个三角形并不是杨辉三角的等腰三角形,而是一个直角三角形,所以如果题主要求严格的杨辉三角的话,需要进行一些稍微复杂的修改。以下代码可供参考,关于 printf() 函数的用法我在代码注释中稍有提及,详细请参阅 Java 的官方文档。


public class YangHui {

    public static void main(String args[]) {

        // 先定义以一个二维数组。列比行多 1,EG:第 0 行有一个
        // 元素。
        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++) {
                yanghui[i][0] = yanghui[i][i] = 1;

                if ((i > 1) && (j > 0) && (j < i)) {
                    yanghui[i][j] = yanghui[i - 1][j] + 
                                    yanghui[i - 1][j - 1];
                }
            }
        }

        // 二维数组遍历,打印每个数字。
        for (int i = 0; i < yanghui.length; i++) {

            // 打印数字之前先根据此行数字的数量来打印相应数量的
            // 空格,这里选择 8 个空格的长度作为示范。
            for (int k = 0; 
                k < Math.ceil((10 - i - 1) / 2); 
                k++) {
                
                // 前面的占位符 "%-8s" 中, - 代表这个字符串是
                // 左对齐的,8 代表这个字符串最多由 8 个字符组成,
                // s 代表这个字符串表示的类型是字符串 (String)。
                System.out.printf("%-6s", "");
            }

            // 根据行数的奇偶来判断是否打印额外半个长度(8 的一半
            // 是 4)的空格,如果没有这一步的话,打印出的形状不会
            // 是一个完整的等腰三角形。
            System.out.printf(i % 2 == 0 ? "%-6s" 
                                        : "%-3s", "");

            // 打印完前面的空格后便可打印数字了。
            for (int j = 0; j < yanghui[i].length; j++) {

                // 每个数字仍占 8 个字符的空间,这样可以保证数字
                // 的长度整齐划一。"%-8d" 中的 d 代表这个字符串
                // 所表示的类型是整数(Decimal)。
                System.out.printf("%-6d", yanghui[i][j]);
            }

            // 打印完一行数字后,打印一个新行并开始输出下一行数字。
            System.out.println();
        }
    }
}


(上述代码的空格长度 6 和 3 可以随意更改,只要确保长空格长度是偶数,短空格长度是长空格的一半即可。空格越长输出的三角形越松散)。


以上代码运行的结果为



是一个完整的杨辉三角形。

B2K1bonPplR
2016-09-24 · TA获得超过2049个赞
知道小有建树答主
回答量:1156
采纳率:72%
帮助的人:389万
展开全部
System.out.println(yanghui[i][j]);
改为
System.out.printf("%5d", yanghui[i][j]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式