减少打印形状的代码大小

时间:2014-02-04 19:50:11

标签: java

以下面的格式打印代码?我有一个代码,但我觉得很多不必要的4 for循环我可以用较小的for循环重现输出。

*
**
***
****
***
**
*

我的代码:

public static void main(String[] args) {    
    for(int i=0; i<=3; i++) {
        for(int j=0; j<=i; j++) {
            System.out.print("*");
        }
        System.out.println();
    }

    for(int j=1; j<=3; j++) {
        for(int i=3; i>=j; i--) {
            System.out.print("*");
        }
        System.out.println();
    }
}

4 个答案:

答案 0 :(得分:2)

您可以在一行代码中执行相同的操作(加上类和main样板文件):

System.out.println("*\n**\n***\n****\n***\n**\n*");

答案 1 :(得分:2)

您可以将逻辑划分为一个方法,以获得n星,如此,

// Build a String of n stars.
public static String getStars(int n) {
    StringBuilder sb = new StringBuilder(n);
    for (int i = 0; i < n; i++) {
        sb.append("*");
    }
    return sb.toString();
}

然后用类似

的方式调用它
public static void main(String[] args) {
    int MAX = 4;
    for (int i = 1; i <= MAX; i++) {
        System.out.println(getStars(i));
    }
    for (int i = MAX - 1; i > 0; i--) {
        System.out.println(getStars(i));
    }
}

答案 2 :(得分:1)

只是为了lulz ...... (fill生成一串字符)

LinkedList<String> list = new LinkedList<String>();
final int size = 3;
list.add(fill('*', size));
for(int i = size - 1; i > 0; i--)
{
   list.addFirst(fill('*', i));
   list.addLast(fill('*', i));
 }

 for(String elem : list)
   System.out.println(elem);

答案 3 :(得分:1)

一些不错的递归怎么样?

public static void main(String[] args) {
    doRecursion(1);
}

public static void printSomeStars(int count)
{
    for(int i=0;i<count;i++)
    {
        System.out.print("*");
    }
    System.out.println("");
}

public static void doRecursion(int count)
{
    printSomeStars(count);

    if (count <= 4)
    {
        doRecursion(count+1);
    }

    printSomeStars(count-1);
}