Java ascii艺术使用循环

时间:2011-10-25 10:08:19

标签: java ascii-art

我正在尝试用Java编写一个程序来捕获用户的整数(假设数据有效),然后根据整数的大小输出菱形,即用户输入5,输出将是:

--*--
-*-*-
*---*
-*-*-
--*--

到目前为止,我有:

if ( sqr < 0 ) {
        // Negative
        System.out.print("#Sides of square must be positive");
    }

    if ( sqr % 2 == 0 ) {
        // Even
        System.out.print("#Size (" + sqr + ") invalid must be odd");
    } else {
        // Odd
        h = ( sqr - 1 ) / 2; // Calculates the halfway point of the square
        // System.out.println();
        for ( j=0;j<sqr;j++ ) {    

            for (i=0;i<sqr;i++) {

                if ( i != h) {
                    System.out.print(x);
                } else {
                    System.out.print(y);
                }

            }

            System.out.println();
        }

    }

只是输出

--*--
--*--
--*--
--*--
--*--

任何想法,我都在考虑降低h的价值,但这只会产生钻石的左手边。

3 个答案:

答案 0 :(得分:2)

看看你的情况:

 if ( i != h )

这仅查看列号(i)和中间点(h)。 您需要一个查看列号和行号的条件。更准确地说,您需要一个条件来查看列号,行号和中间点列号的距离。
由于这是一个家庭作业问题,我会给你确定准确的公式,但如果你需要,我愿意再提一些提示。祝你好运!

答案 1 :(得分:2)

void Draw(int sqr)
        {
            int half = sqr/2;
            for (int row=0; row<sqr; row++)
            {
                for (int column=0; column<sqr; column++)
                {
                    if ((column == Math.abs(row - half)) 
                        || (column == (row + half)) 
                        || (column == (sqr - row + half - 1)))
                    {
                        System.out.print("*");
                    }
                    else
                    {
                        System.out.print("_");
                    }
                }
                System.out.println();
            }
        }

好的,现在这是代码,但正如我看到S.L. Barth的评论我刚刚意识到这是一个功课。因此,我强烈建议您在将此代码用作final之前了解此代码中的内容。随意提出任何问题!

答案 2 :(得分:1)

您可以使用从 PS F:\Project2020\ServletsInVSCode\servletdemo> mvn clean install mvn : The term 'mvn' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 + mvn clean install + ~~~ + CategoryInfo : ObjectNotFound: (mvn:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException -h 的两个嵌套 for 循环,其中 h 是半个菱形。在以下情况下获得钻石的边缘:

h

如果用户输入 Math.abs(i) + Math.abs(j) == h ,那么 n=5,一个菱形看起来像这样:

h=2

Try it online!

n=5, h=2
--*--
-*-*-
*---*
-*-*-
--*--

输出:

// user input
int n = 9;
// half a diamond
int h = n / 2;
// output a diamond shape
System.out.println("n=" + n + ", h=" + h);
for (int i = -h; i <= h; i++) {
    for (int j = -h; j <= h; j++) {
        if (Math.abs(i) + Math.abs(j) == h) {
            System.out.print("*");
        } else {
            System.out.print("-");
        }
    }
    System.out.println();
}