使用嵌套循环在java中创建一个带星星的框

时间:2014-10-11 20:37:04

标签: java

我是java新手并参加了一个介绍课程。

我已经能够弄清楚我的大部分问题,但是我被困在最后一步。

最终结果应该是使用四个或更少的system.out.print或system.out.println语句:

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

我创建了这个

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

这是我的代码。你们有什么可以看到的东西可以提供帮助吗?

public class StarPatterns {
    public static void main(String[] args) {
        int col;
        int row;

        for (row = 6; row >= 0 ; row--) {
            if (row >= 0)
                System.out.print("*");

            for (col = row; col < 6; col++) {
                System.out.print(" ");
            }

            for (col = row; col > 0; col--) {
                System.out.print("*");
            }

            System.out.println();
        }
    }
}

3 个答案:

答案 0 :(得分:2)

public class stars { 

    public static void main(String[] args) {

    int row = 7;
    int col = 7;
    int count;

    for (int i=0;i<row;i++)
    {
        count = i;
        System.out.print("*");
        for (int c=1;c<col;c++)
        {   
            if (count == 0 || count == row-1)
            {
                System.out.print("*");
            }
            else
            {
                System.out.print(" ");
                count--;
            }
        }
        System.out.println("");
    }

}

4 System.out打印:

enter image description here

更新:

3 System.out打印:

public static void main(String[] args) {

        int row = 7;
        int col = 7;
        int count;

        for (int i=0;i<row;i++)
        {
            count = i;
            //System.out.print("*");
            for (int c=0;c<col;c++)
            {   
                if (count == 0 || count == row-1 || c == 0)
                {
                    System.out.print("*");
                }
                else
                {
                    System.out.print(" ");
                    count--;
                }
            }
            System.out.println("");
        }

    }

可能不是最佳(内存使用)但可能对逻辑有用:

使用2个System.out打印:

public static void main(String[] args) {

        int row = 7;
        int col = 7;
        int count;
        String strNewLine = "*" + System.lineSeparator();
        String str = "*";
        String strToPrint;

        for (int i=0;i<row;i++)
        {
            count = i;
            for (int c=0;c<col;c++)
            {   
                if (count == 0 || count == row-1 || c == 0)
                {
                    if (c == row-1)
                    {
                        strToPrint = strNewLine;
                    }
                    else
                    {
                        strToPrint = str;
                    }

                    System.out.print(strToPrint);
                }
                else
                {
                    System.out.print(" ");
                    count--;
                }
            }
        }

    }

答案 1 :(得分:1)

编辑:缺少一个:修复

你怎么看待这个:

public static void main(String[] args) {
    for (int row=0; row<7; row++) {
        for (int col=0; col<7; col++) {
            System.out.print((col == 0) || (row == 6) || (col > row) ? "*" : " ");
        }
        System.out.println();
    }
}

结果是:

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

答案 2 :(得分:0)

你可以在没有三元运算符的情况下完成它,因为我认为你还没有学过它(或者至少你的导师不喜欢你使用它们):

public class StarPatterns {
    public static void main(String[] args) {
        int col;
        int row;

        for (row = 0; row < 7; row++) {
            for (col = 0; col < 7; col++) {
                String symbol = " ";
                if (row == 0 || col == 0 || col > row || row == 6) {
                    symbol = "*";
                }

                if (col == 6) {
                    symbol += System.getProperty("line.separator");
                }

                System.out.print(symbol);
            }
        }
    }
}

输出:

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