2013-10-17 48 views
0

我一直在为我的Java类做家庭作业时遇到了一些麻烦。其中,我们应该采用1到13之间的整数,并显示由数字组成的三个不同的三角形。例如,如果我是进入5,其结果必然是:在java中打印数字的三角形

三角1

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

三角2

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

三角3

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

我已经得到了第一个Triangle,但我最担心的是第二个三角形。我还没有尝试过第三个。另一件事是我的教授对我们在创建项目时使用什么方法很挑剔。换句话说,我们只能使用他教给我们的东西。他告诉我们使用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(); 
     } 
    } 

因此,相当多,我需要遵循的标准创建其它两个三角形,但我真的停留在第二个和我不知道从哪里开始。任何帮助都感激不尽!

+0

我建议你写一个程序,只是做第一列。然后修改它,以便它前两列。从那里它应该是显而易见的。 – BevynQ

+0

显示您为第二个三角形尝试编写的代码。让我们看看你已经放下了什么,然后我们可以愉快地引导你朝着正确的方向 – Kon

+0

你的代码中的'k'是否用于任何事情? – Shaded

回答

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等于不同的东西。

算法写作全是关于识别模式。

+0

感谢您的帮助!我已经完成了第二个三角形。现在我只需要完成第三个三角形。 – Atarinerd80

+0

@ Atarinerd80没问题,很高兴我能帮上忙。 –

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] 

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

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个打印7

FO r i = 3 j = 2 print 10

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