gpt4 book ai didi

java - 绘制数字菱形

转载 作者:行者123 更新时间:2023-11-30 08:44:55 25 4
gpt4 key购买 nike

我需要绘制一个数字菱形,例如高度为 9:

    1
222
33333
4444444
555555555
4444444
33333
222
1

我写了代码,我设法得到了同样的钻石,但有星星。我想要这些数字。我怎样才能做到这一点?这是我到目前为止所做的:

for (int i = 1; i < 10; i += 2) {
for (int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for (int j = 0; j < i; j++)
System.out.print("a");
System.out.print("\n");
}

for (int i = 7; i > 0; i -= 2) {
for (int j = 0; j < 9 - i / 2; j++)
System.out.print(" ");
for (int j = 0; j < i; j++)
System.out.print("b");
System.out.print("\n");
}

最佳答案

关于您的代码:

  • System.out.print("\n"); 应替换为 System.out.println()
  • 您应该使用动态高度而不是硬编码 9。
  • 它打印出正确的模式,只有打印出的是错误的:不是打印"a""b",您应该打印循环的索引和看看你能从那里得到什么。这是@Tsung-Ting Kuo 的解决方案。

在我看来,您可以用更少的循环和更容易理解的方式来做到这一点。考虑以下算法:

  • 对于模式的每一行(因此行从 0 到 height 排除)
  • 对于模式的每一列(因此列从 0 到 height 排除)
  • 当我们位于图表的右上、左上、右下或左下时,我们需要打印一个空格。
    • 左上角:这是当列小于 height/2-row-1
    • 左下角:当列小于 row-height/2
      • 将这两个表达式分解为一个表达式,这是当列小于 height/2 - minmin = Math.min(row+1, height-row)
    • 右上:这是当列大于height/2+row+1
    • 右下角:这是当列大于 height/2+height-row
      • 将这两个表达式分解为一个表达式,这是当列大于 height/2 + min 时,其中 min = Math.min(row+1, height-row)
  • 否则,我们需要打印Math.min(row+1, height-row)

转化为代码:

public static void main(String[] args) {
int height = 9;
for (int row = 0; row < height; row++) {
for (int column = 0; column < height; column++) {
int min = Math.min(row+1, height-row);
if (column <= height / 2 - min || column >= height / 2 + min) {
System.out.print(" ");
} else {
System.out.print(min);
}
}
System.out.println();
}
}

示例输出:

    1    
222
33333
4444444
555555555
4444444
33333
222
1

关于java - 绘制数字菱形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com