在java中打印数字三角形

时间:2013-10-17 21:21:31

标签: java

我的Java课程的作业分配遇到了一些麻烦。在其中,我们应该采用1到13之间的整数,并显示由数字组成的三个不同的三角形。例如,如果我输入5,结果将是:

三角1

     1
     2  3
     4  5  6
     7  8  9 10
    11 12 13 14 15

Triangle 2

    1
    2 6
    3 7 10
    4 8 11 13
    5 9 12 14 15

Triangle 3

               5
            4  9
         3  8 12
      2  7 11 14
    1 6 10 13 15

我已经让第一个三角形变好了,但我最关心的是第二个三角形。我还没有尝试过第三个。另一件事是我的教授对于我们在创建项目时使用的方法很挑剔。换句话说,我们只能使用他教给我们的东西。他告诉我们使用System.out.printf(“%3d”,n)语句来区分字符,我们必须在一个单独的类中创建它们。

第一个三角形的代码如下:

    void triangle1(int n)
    {
        int k = 1;
        for (int i = 1; i <= n; i++)
        {
            for (int j = 0; j < 1; j++)
            {
                System.out.printf("%3d", n);
                k += 1;
            }

            System.out.println();
        }
    }

所以,差不多,我需要遵循这个标准来创建另外两个三角形,但我真的卡在第二个三角形上,我不知道从哪里开始。任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

这是我接近它的方式。

程序一次打印一行,不能打印半行然后开始打印另一行。

话虽如此,你应该认识到三角形中的模式。

1
2 6
3 7 10
4 8 11 13
5 9 12 14 15

您有第一个号码n,然后您会看到下一行以n + 1开头。行中的下一个数字是(n + 1) + t,其中t = 4。那里有一种模式。

第三行遵循相同的模式。 第一个数字是(n + 1),然后您可以按+ (t - 1)

计算其他数字

这可以通过for循环完成,就像你第一次做的那样。

对于最后一个三角形,您可以使用相同的过程,只需更改符号,t将等于不同的东西。

算法编写就是识别模式。

答案 1 :(得分:0)

如果仔细观察,您会发现每个数字与给定行后面的数字之间存在重复模式。

3 7 10 =>       [3 & 7 differ by 4][7 & 10 differ by 3]
4 8 11 13 =>    [4 & 8 differ by 4][8 & 11 differ by 3][11 & 13 differ by 2]
5 9 12 14 15 => [...   differ by 4][...           by 3][...            by 2][... by 1]

您可以使用该信息制作第二个三角形。我会把剩下的留给你。我希望有所帮助!

答案 2 :(得分:0)

似乎你是CS学生,因此我不会提出完成的解决方案。我会给你一些提示,我会如何解决这个问题。

这是print语句必须做的事情:

表示i = 1 j = 0打印1

表示i = 2 j = 0打印2

表示i = 2 j = 1打印6

表示i = 3 j = 0打印3

表示i = 3 j = 1 print 7

对于i = 3 j = 2打印10

找到一个从i和j计算正确输出的公式,它是一个简单的线性组合。