java的杨辉三角问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的杨辉三角问题相关的知识,希望对你有一定的参考价值。

代码如下,
public class Yanghui

public Yanghui()
//public static void main(String args[])

int n=10;
int mat[][]=new int[n][];
int i,j;
for(i=0;i<n;i++)

mat[i]=new int[i+1];
mat[i][0]=1;
mat[i][i]=1;
for(j=1;j<i;j++)

mat[i][j]=mat[i-1][j-1]+mat[i-1][j];


for(i=0;i<mat.length;i++)

for(j=0;j<n-i;j++)
System.out.print(" ");
for(j=0;j<mat[i].length;j++)
System.out.print(" "+mat[i][j]);
System.out.println();




编译执行时出现了这样的错误提示,
java.lang.NullPointerException
at Yanghui.<init>(Yanghui.java:30)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at bluej.runtime.ExecServer$3.run(ExecServer.java:814)
但是不懂怎麽改正才行

参考技术A public class Yanghui

public Yanghui()

//用来在每一次打印前面加空格, 看的整齐
public static String addSpace(int i)
String str = String.valueOf(i);
int len = str.length();
for (int j = 0; j < 4 - len; j++)
str = " " + str;

return str;


public static void main(String args[])
int i, j, n = 10;
int mat[][] = new int[n][];
for (i = 0; i < n; i++)
mat[i] = new int[i + 1];
mat[i][0] = 1;
mat[i][i] = 1;
int matLen = mat[i].length - 2;
//只对每行的元素个数超过2个的才进行循环赋值
if(matLen > 0)

for (j = 0; j < matLen; j++)

mat[i][j + 1] = mat[i - 1][j + 1] + mat[i - 1][j];



for (i = 0; i < mat.length; i++)
for (j = 0; j < mat[i].length; j++)
//需要其它不同的打印方式, 可以自己调试的加上去.
System.out.print(addSpace(mat[i][j]));
System.out.println();


参考技术B for (i = 0; i < mat.length; i++)
for (j = 0; j < n - i; j++)
System.out.print(" ");
for (j = 0; j < mat[i].length; j++)
System.out.print(" " + mat[i][j]);
System.out.println();

这段代码要放在
for(i=0;i<n;i++)

mat[i]=new int[i+1];
mat[i][0]=1;
mat[i][i]=1;
for(j=1;j<i;j++)

mat[i][j]=mat[i-1][j-1]+mat[i-1][j];


这个循环外面
参考技术C public class YangHui <br> <br> public static void main(String args[])<br> try<br> int n = 10;<br> int mat[][] = new int[n][];<br> int i, j;<br> for (i = 0; i < n; i++) <br> mat[i] = new int[i + 1];<br> //mat[i][0] = 1;<br> mat[i][i] = 1;<br> for (j = 1; j < i; j++) <br> mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j];<br> <br><br> <br> for (i = 0; i < mat.length; i++) <br> for (j = 0; j < n - i; j++)<br> System.out.print(" ");<br> for (j = 0; j < mat[i].length; j++)<br> System.out.print(" " + mat[i][j]);<br> System.out.println();<br> <br> catch(Exception e)<br> e.printStackTrace();<br> <br> <br>dfsdfsdfsdf 参考技术D class Yanghui
Yanghui()
public static void main(String args[])

try

int n = 10;
int mat[][] = new int[n][];
int i, j;
for (i = 0; i < n; i++)

mat[i] = new int[i + 1];
mat[i][i] = 1;
for (j = 1; j < i; j++)

mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j];



for (i = 0; i < mat.length; i++)

for (j = 0; j < n - i; j++)
System.out.print(" ");
for (j = 0; j < mat[i].length; j++)
System.out.print(" " + mat[i][j]);
System.out.println();


catch(Exception e)

e.printStackTrace();


第5个回答  2009-03-02 public class YangHui

public static void main(String args[])
try
int n = 10;
int mat[][] = new int[n][];
int i, j;
for (i = 0; i < n; i++)
mat[i] = new int[i + 1];
//mat[i][0] = 1;
mat[i][i] = 1;
for (j = 1; j < i; j++)
mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j];



for (i = 0; i < mat.length; i++)
for (j = 0; j < n - i; j++)
System.out.print(" ");
for (j = 0; j < mat[i].length; j++)
System.out.print(" " + mat[i][j]);
System.out.println();

catch(Exception e)
e.printStackTrace();


本回答被提问者采纳

Java 写三角形 空心三角形 菱形 空心菱形

闲来无事,练习了一下Java基础中的循环语句。练习循环语句,当然少不了,用*打印出来三角形、空心三角形、菱形等这样的几何图形。

粗心大意,失误两次:

一、三角形

遇到一些小问题:

、金字塔

由于三角形和金字塔的代码差不多,只有少部分更改,图也可以看的很清楚。所以下面只写一部分代码好啦。

代码实例:

//作者:我
//功能:镂空金字塔
//时间:2018年1月10日

public class Hello{
        public static void main(String args[]){
                   //死去活来法
                    //int lay=4;
                    int lay=7;
                    for (int i=1;i<=lay;i++ )
                    {
                        //找出空格规律
                        //1->3 2->2 3->1 4->0
                        for(int k=1;k<=lay-i;k++)
                            {
                            System.out.print(" ");
                            }
                            //打印*
                            /*不正确的
                                for(int j=1;j<=i;j++){
                                System.out.print("*");
                                }*/
                            //打印*的规律
                            //1->1 2->3 3->5 ....
                            for(int j=1;j<=i*2-1;j++){
                                
                                if(i==1||i==lay){
                                //i代表层
                                System.out.print("*");
                                }else{
                                    //如果是第一个* 
                                    if(j==1||j==i*2-1){
                                       System.out.print("*");
                                    }else{
                                       System.out.print(" ");
                                    }

                                }
                            }
                            //打印换行
                                System.out.println();
                  }            
          }
}

三、菱形

菱形的代码是我在网上找的,看懂了逻辑。自己也玩了一下了,在hangshu取值为双数时,实心菱形一点bug。

代码实例:

//网上查找的代码
public class Hello3{
     public static void main(String args[]){
               int hangshu = 20;  
               int yiban = hangshu / 2 + 1;  
               int yibanduo = hangshu / 2; 
     
      
    System.out.println("实心菱形:");  
    for(int i = 1;i <= hangshu;i++){  
        if(i <= hangshu/2 + 1){  
            for(int k = 1;k <= hangshu/2 + 1- i;k++){  
                System.out.print(" ");  
            }  
            for(int k = 1;k <= i;k++){  
                System.out.print("* ");  
            }  
                System.out.println();  
        }else{  
            for(int k =1;k <= (i -(hangshu/2 + 1));k++){  
                System.out.print(" ");  
            }  
            for(int k = 1;k <= (2 *(hangshu/2 + 1) - i);k++){  
                System.out.print("* ");  
            }  
            System.out.println();  
        }     
    }

    System.out.println("空心菱形:");  
    for(int k = 1;k <= yiban;k++){  
        for(int i = 1;i <= (yiban - k);i++){  
            System.out.print(" ");  
        }  
        System.out.print("*");  
        for(int i = 1;i <= ( (k - 2) * 2 + 1);i++){  
            System.out.print(" ");  
        }  
        if(k != 1){  
            System.out.print("*");    
        }  
        System.out.println();  
    }  
    for(int k = yibanduo;k >=1;k--){  
        for(int i = 1;i <= (yiban - k);i++){  
            System.out.print(" ");  
        }  
        System.out.print("*");  
        for(int i = 1;i <= ( (k - 2) * 2 + 1);i++){  
            System.out.print(" ");  
        }  
        if(k != 1){  
            System.out.print("*");    
        }  
        System.out.println();  
    }   
  }
}

 

以上是关于java的杨辉三角问题的主要内容,如果未能解决你的问题,请参考以下文章

Java语言杨辉三角

怎样用java打印杨辉三角,自己输入行

java:杨辉三角,输入n输出它的前n行

Java_基础篇(杨辉三角)

JAVA实现杨辉三角的三种方式

用JAVA打印杨辉三角…