我的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();
}
}
所以,差不多,我需要遵循这个标准来创建另外两个三角形,但我真的卡在第二个三角形上,我不知道从哪里开始。任何帮助将不胜感激!
答案 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计算正确输出的公式,它是一个简单的线性组合。