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)
但是不懂怎麽改正才行
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的杨辉三角问题的主要内容,如果未能解决你的问题,请参考以下文章