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のコメントを見て、これが宿題であることに気づきました。したがって、このコードをfinalとして使用する前に、このコードに何が記述されているかを理解することを強くお勧めします。ご不明な点がございましたらお気軽にお問い合わせください!

于 2011-10-25T10:35:39.267 に答える
2

あなたの状態を見てください:

if (i != h)

これは、列番号iと中間点のみを調べますh。列番号と行番号を調べる条件が必要です。より正確には、列番号、行番号、および中間点からの列番号の距離を調べる条件が必要です。
これは宿題の質問なので、正確な式の決定はあなたに任せますが、必要に応じてさらにヒントをいくつかドロップします。幸運を!

于 2011-10-25T10:23:03.140 に答える
1

-hからへの2つのネストされたforループを使用できます。hここで、hはダイアモンドの半分です。ダイヤモンドのエッジは、次の場合に取得されます。

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

ユーザーが、、、を入力するn=5h=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 に答える