Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java打印数字三角形_Java - Fatal编程技术网

用java打印数字三角形

用java打印数字三角形,java,Java,我在Java课程的家庭作业上遇到了一些问题。在它里面,我们应该取一个介于1和13之间的整数,并显示三个不同的三角形,由数字组成。例如,如果输入5,结果将是: 三角形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

我在Java课程的家庭作业上遇到了一些问题。在它里面,我们应该取一个介于1和13之间的整数,并显示三个不同的三角形,由数字组成。例如,如果输入5,结果将是:

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

对于(inti=1;i,这里是我处理它的方法

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

说到这里,你应该能辨认出三角形的图案

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


算法编写是关于识别模式的。

如果你仔细观察,你会发现在每个数字和给定行上的数字之间有一个重复的模式

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]

你可以利用这些信息来制作第二个三角形。剩下的就交给你了。我希望这会有帮助!

你似乎是一名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

对于i=3 j=2,打印10


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

我建议您编写一个只处理第一列的程序。然后对其进行修改,使其处理前两列。从那里,它应该是显而易见的。显示您为第二次三角形尝试编写的代码。让我们看看您到目前为止写了什么,然后我们可以很高兴地引导您朝正确的方向前进。代码中的
k
有什么用吗?谢谢您的帮助!我已经完成了第二个三角形。现在我只需要完成第三个三角形。@Atarinerd80没问题,很高兴我能帮上忙。