java - 如何在 java 中使用 for 循环在 java 中打印倾斜的金字塔图案?

标签 java algorithm loops for-loop

我一直在尝试在 java 中使用 for 循环语句打印不同的模式。现在我想学习如何打印以下图案。它基本上是一种倾斜的金字塔型图案。

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

我试着做到了,我确实得到了正确的结果,但问题是我认为我这样做的方式是一种不方便的方式。这是代码:

for (int x = 1; x <= 4; x++) {
    for (int y = 1; y <= x; y++) {
        System.out.print("*");
    }
    System.out.println();
}
for (int x = 1; x <= 3; x++) {
    for (int y = 3; y >= x; y--) {
        System.out.print("*");
    }
    System.out.println();
}

最佳答案

您的代码产生了正确的输出并且对我来说足够清晰。我能提出的唯一建议是使用变量来表示金字塔的大小,而不是硬编码值。

您可以用更紧凑的方式编写它,只使用 2 个循环,如下所示:

int size = 7;
for (int row = 0; row < size; row++) {
    for (int column = 0; column <= Math.min(size-1-row, row); column++) {
        System.out.print("*");
    }
    System.out.println();
}

这里的想法是:

  • 对于金字塔的每一行(因此行从 0 到 size 排除)
  • 我们需要确定要打印多少个星号。如果我们在金字塔的上半部分,它就等于我们所在的行。如果我们在金字塔的下半部分,它等于 size-1-row(随着行的增加而减少)。因此,星号的计数是 rowsize-1-row 中的最小值:这是使用 Math.min(size-1-行,行)

关于java - 如何在 java 中使用 for 循环在 java 中打印倾斜的金字塔图案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33329199/

相关文章:

java - 如何在 freeBSD sh 的命令行中获取 java 进程的进程 ID

java - 改进数独的随机数生成器

algorithm - 如何用链表实现一个不相交集的数据结构?

PHP 字符串到 hashmap

c++ - 有没有办法缩短长 switch() 语句?

functional-programming - 将 javascripts native "for loop"与原型(prototype)的 each() 进行比较

java - Android Realm - 从服务访问 Realm 对象

java - Android:通过套接字发送位图字节数组时遇到问题

database - 数据库是如何实现skipping的?

ios - iOS中的程序化无间隙音频序列