求高手来改造,该怎么处理
求高手来改造
class YangHui
{
public static void main(String[] args)
{
int row=10;
int yh[][]=new int[row][row];
for(int x=0;x<row;x++)
{
yh[x][0]=1;
if(x==0)
{
System.out.println(yh[x][0]+"\t");
}
else
{
System.out.print(yh[x][0]+"\t");
}
if(x>=1)
{
for(int i=x;i<=x;i++)
{
for(int j=1;j<row;j++)
{
yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
if(yh[i][j]==0)
{
System.out.print(" ");
}
else
{
System.out.print(yh[i][j]+"\t");
}
}
}
System.out.println("");
}
}
}
}
我想打印出那种三角形的杨辉三角 那种得比较正规一点 求高手帮忙改一下。。。
------解决方案--------------------
class YangHui
{
public static void main(String[] args)
{
int row=10;
int yh[][]=new int[row][row];
for(int x=0;x<row;x++)
{
yh[x][0]=1;
if(x==0)
{
System.out.println(yh[x][0]+"\t");
}
else
{
System.out.print(yh[x][0]+"\t");
}
if(x>=1)
{
for(int i=x;i<=x;i++)
{
for(int j=1;j<row;j++)
{
yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
if(yh[i][j]==0)
{
System.out.print(" ");
}
else
{
System.out.print(yh[i][j]+"\t");
}
}
}
System.out.println("");
}
}
}
}
我想打印出那种三角形的杨辉三角 那种得比较正规一点 求高手帮忙改一下。。。
------解决方案--------------------
- Java code
public class StartG { public static void main(String [] args) { int i=0; int j=0; for(i=1;i<=4;i++) { for(j=1;j<=2*i-1;j++) System.out.print("*"); System.out.println(""); } for(i=4;i>=1;i--) { for(j=1;j<=2*i-3;j++) System.out.print("*"); System.out.println(""); } } }
------解决方案--------------------
原来在 **** 回复的,可以参考一下。
- Java code
public class Yanghui { public static void main(String[] args) { Yanghui yang = new Yanghui(); yang.printYanghuiTriangle(13); } /** * 生成指定行数的杨辉三角形 * * @param lines 杨辉三角形的行数 */ public void printYanghuiTriangle(int lines) { if(lines < 1) { throw new IllegalArgumentException("lines must be great than 0."); } if(lines > 30) { throw new IllegalArgumentException("lines is too big."); } int[] line = new int[lines]; int maxLen = getMaxLen(lines); for(int i = 0; i < lines; i++) { line[0] = line[i] = 1; for(int j = 1, k = i / 2, pre = line[0]; j <= k; j++) { int cur = line[j]; line[i - j] = line[j] += pre; pre = cur; } printLine(line, i + 1, maxLen); } } /** * 根据指定行数的杨辉三角形,利用二项式定理计算其中最大数字的长度 * @param lines 杨辉三角形的行数 * @return 最大数字的长度 */ private int getMaxLen(int lines) { int k = lines / 2; long maxNum = factorial(k + 1, lines - 1) / factorial(1, lines - 1 - k); return getLength(maxNum); } /** * 阶乘计算 * @param start 阶乘计算的起始数字 * @param num 阶乘计算的终止数字 * @return 阶乘计算结果 */ private long factorial(int start, int num) { long result = start > 0 ? start : 1L; while(num > start) { result *= num--; } return result; } /** * 根据指定数字计算数字的长度 * @param num 数字 * @return 数字的长度 */ private int getLength(long num) { int len = 0; while(num > 0L) { num /= 10L; len++; } return len; } private void printLine(int[] yanghui, int line, int width) { printSpaces((yanghui.length - line) * width); for(int i = 0; i < line; i++) { if(i > 0) { printSpaces(width); } printSpaces(width - getLength(yanghui[i])); System.out.print(yanghui[i]); } System.out.println(); if(width > 1) { System.out.println(); } } private void printSpaces(int spaceCount) { for(int i = 0; i < spaceCount; i++) { System.out.print(" "); } } }