嵌套for循环不增加1

时间:2018-10-10 02:30:27

标签: java

在下面的代码块中:

public static void main(String[] args) {
    int i;
    int x = 0;
    int count;
    int sum = 0;
    Scanner scan = new Scanner(System.in);

    System.out.println("Enter The Table Operator (+, -, *, /, %, or R)");
    String operator = scan.nextLine();

    System.out.println("Enter The Smallest Operand For the Table:");
    int small = scan.nextInt();

    System.out.println("Enter The Largest Operand For the Table");
    int large = scan.nextInt();

    for(i = 0; i < 12; i++) {
      for(x = 0; x <= large; x ++)
        System.out.printf("%4d", x + small);
      System.out.printf("\n");
      x++;
      large++;
    }
}

代码输出:

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

但是我希望它看起来像这样:

1 2 3 4 5 6 7 8 9 10 11 12 13
2 3 4 5 6 7 8 9 10 11 12 13 14
3 4 5 6 7 8 9 10 11 12 13 14 15
4 5 6 7 8 9 10 11 12 13 14 15 16
5 6 7 8 9 10 11 12 13 14 15 16 17
6 7 8 9 10 11 12 13 14 15 16 17 18
7 8 9 10 11 12 13 14 15 16 17 18 19
8 9 10 11 12 13 14 15 16 17 18 19 20
9 10 11 12 13 14 15 16 17 18 19 20 21
10 11 12 13 14 15 16 17 18 19 20 21 22
11 12 13 14 15 16 17 18 19 20 21 22 23
12 13 14 15 16 17 18 19 20 21 22 23 24

基本上,这是一个加法表。我正在尝试获取x值和“大”值,以在每个循环上实现一个。我很确定我使用的for循环不正确,但是我无法找出方法。

4 个答案:

答案 0 :(得分:3)

for (int row = 1; row <= 12; row++) {
    for (int col = row; col < row + 13; col++)
        System.out.print(col != row ? " " + col : col);

    System.out.println();
}

这个非常简单的Trianlge。只需将row和'col'等所有临时变量内联到循环中即可。要简单。

答案 1 :(得分:2)

int large = 10;
int small = 0;
int x,i;
for( i = 0; i < large; i++) {
    for( x = 1; x <= large; x ++)
        System.out.printf("%d ", x + small);
    System.out.printf("\n");
    x++;
    small++;
}
  1. 将“%4d”更改为“%d”。 %4d使每个数字长4个空格,但无论如何,但您想要数字和一个空格。

  2. 外部for循环的最后一行应该是small ++而不是large ++,以便每次都偏移起始值。

答案 2 :(得分:2)

您的循环看起来正确。您正在增加错误的变量。

for(i = 0; i < large; i++) {
    for(x = 0; x <= large; x ++){
        System.out.printf("%4d", x + small);
    }
    System.out.printf("\n");
    small++;
}

输出:

   1   2   3   4   5   6   7   8   9  10  11  12  13
   2   3   4   5   6   7   8   9  10  11  12  13  14
   3   4   5   6   7   8   9  10  11  12  13  14  15
   4   5   6   7   8   9  10  11  12  13  14  15  16
   5   6   7   8   9  10  11  12  13  14  15  16  17
   6   7   8   9  10  11  12  13  14  15  16  17  18
   7   8   9  10  11  12  13  14  15  16  17  18  19
   8   9  10  11  12  13  14  15  16  17  18  19  20
   9  10  11  12  13  14  15  16  17  18  19  20  21
  10  11  12  13  14  15  16  17  18  19  20  21  22
  11  12  13  14  15  16  17  18  19  20  21  22  23
  12  13  14  15  16  17  18  19  20  21  22  23  24

答案 3 :(得分:1)

    int small = 1;
    int large = 12;
    for(int i = 0; i < 12; i++) {
        for(int x = i; x <= i + large; x ++)
        {
            System.out.printf("%4d", x + small);
        }
        System.out.printf("\n");

    }

通过更改x中的i -> i + large范围来检查此简单更改,这样可以避免增加很大(因为不需要,因为每次迭代i也会增加)

ix的每个迭代中您要尝试的操作是在打印操作结束时将其递增,这不会完全按照您想要的效果进行,因为对于每次迭代,您打印的值应该进行迭代并打印,因此将x值更改为i,它将在每次迭代中递增,并一直使用到i + large(其中large是您作为最大限制获得的数字)

请注意,由于smalllarge在整个循环中都是恒定的,因此可以实现