首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求高手来改造,该怎么处理

2012-04-07 
求高手来改造class YangHui{public static void main(String[] args){int row10int yh[][]new int[row]

求高手来改造
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("");           }   } }
[解决办法]
原来在 CSDN 回复的,可以参考一下。

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(" ");        }    }} 


[解决办法]
以后会懂得 当初都这样

热点排行