如何仅使用两个变量在java中创建数字模式?

时间:2014-09-07 13:56:20

标签: java

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

这是必需的模式,我使用的代码是

  public class Test{
    public static void main(String[] args) {
        int k = 1;
        for (int i = 0; i <= 5; i++){
            for (int j = 1; j <= i; j++){
                System.out.print(k + " ");
                k++;
            }
            System.out.println();
        }
    }
}

如您所见,我使用变量 k 来打印数字。 我的问题是,有没有办法在不使用第三个变量 k 的情况下打印完全相同的模式? 我想仅使用 i j 打印图案。

3 个答案:

答案 0 :(得分:6)

由于这个问题是一个学习练习,我不会提供完整的解决方案,而是提供一些提示:

  • 如果您知道前一行中的最后一个数字,是否可以打印序列? - 答案很简单:您需要打印priorLine + j
  • 鉴于i,您如何找到i-1行上打印的最后一个数字的值? - 找到答案,查找formula for computing the sum of arithmetic sequence 。在您的情况下,d = 1且 1 = 1。

答案 1 :(得分:0)

您可以使用:

public static void main(String[] args) {
    for (int i = 1; i <= 5; i++) {
        for (int j = 0; j < i; j++) {
            System.out.print((i * (i - 1)) / 2 + j + 1 + " ");
        }
    }
}

或者你可以找到第n个术语并每次减去它:

public static void main(String[] args) {
    for (int i = 0; i <= 5; i++) {
        for (int j = 1; j <= i; j++) {
            System.out.print(((i * (i + 1)) / 2) - (i - j) + " ");
           // k++;
        }
        System.out.println(" ");
    }
}

答案 2 :(得分:-5)

您可以使用

System.out.println((i+j) + " ");

e.g。

i    j    (i+j)

0    1      1
1    1      2
2    1      3
2    2      4
..........