3

我正在尝试用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但这只会产生钻石的左侧。

4

3 回答 3

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

好的,现在这是代码,但是当我看到 SL Barth 的评论时,我才意识到这是一个家庭作业。因此,我强烈建议您在将其用作最终代码之前了解这段代码中写的内容。随意问任何问题!

于 2011-10-25T10:35:39.267 回答
2

看看你的情况:

if (i != h)

这仅查看列号i和中间点h。您需要一个查看列号和行号的条件。更准确地说,您需要一个条件来查看列号、行号以及列号与中间点的距离。
由于这是一个家庭作业问题,我将确定精确的公式留给您,但如果您需要它们,我愿意提供更多提示。祝你好运!

于 2011-10-25T10:23:03.140 回答
1

您可以使用两个嵌套的 for 循环 from -hto h,其中h是半个菱形。钻石的边缘是在以下情况下获得的:

Math.abs(i) + Math.abs(j) == h

如果用户输入n=5, then h=2,菱形看起来像这样:

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

输出:

n=9, h=4
----*----
---*-*---
--*---*--
-*-----*-
*-------*
-*-----*-
--*---*--
---*-*---
----*----
于 2021-03-27T19:03:05.893 回答