我无法用Java编写三角模式

时间:2019-12-29 22:09:50

标签: java algorithm

这是代码

for (int i = 1; i<=5; i++) {
    for (int j = 5; j>=i; j--) {
        System.out.print(" ");
    }
    for (int k = i; k>0; k--) {
        System.out.print(k + " ");
    }
    System.out.println();
}

我想要得到的输出是:

            1
          2 1
        3 2 1
      4 3 2 1
    5 4 3 2 1
  6 5 4 3 2 1

相反,我得到的是:

      1 
     2 1 
    3 2 1 
   4 3 2 1 
  5 4 3 2 1 

您能以一种对初学者友好的方式向我解释原因并告诉我如何解决吗?

2 个答案:

答案 0 :(得分:2)

以下提示可以帮助您解决此问题:

  1. 阅读您的代码,并确保您了解它在做什么。 (如果有人为您编写了代码,请作者解释!)如果您不了解代码的作用,则无法(正确地)修复代码...

  2. 查看预期的输出,并计算每行开头的空格数。

  3. 查看您的实际输出,并计算每行开头的空格数。

  4. 相应计数之间有什么区别?

  5. 差异的模式是什么?

  6. 此修复程序是对代码的一行进行的简单更改。如果您正确地执行了步骤1和步骤5,那么您将需要进行的更改就变得“显而易见”。

更新-我的错误。 @Bohemian指出有两个区别。如果您还希望输出的行数相同,则需要更改两行。

(但是这个答案的真正意义是帮助您自己解决……)

答案 1 :(得分:1)

确保您了解问题以及代码的确切用途。

这些是我要解决的步骤:

  • 尝试了解输出。

  • 计算所有内容之间的间隔,以查看是否存在某种模式。

  • 查看预期的输出并将其与您的输出进行比较。
  • 基于此进行调整。

如果您很难解决问题,请尝试将问题分解为更小的部分。然后在记事本中用伪代码编写它,这样您就可以更好地了解自己的实际操作。例如:

对于每次迭代,我必须打印X个空格,然后打印Y

  • 迭代1:打印x个空格,打印y
  • 迭代2:打印x个空格,打印y
  • 等等。

我确定你能弄清楚 解决方法如下:

    for (int i = 0; i<=5; i++) {
        for (int j = 6; j>i; j--) {
            System.out.print("  ");
        }
        for (int k = i; k>=0; k--) {
            System.out.print(k+1 + " ");
        }
        System.out.println();
    }