2

我是 Java 新手。我正在尝试在表的每一侧创建一个 12 的乘法表,所以 12 向右,12 向下。在每一行上,我们将看到两个值的倍数。所以我的计划是使用 12 个非常相似的语句来打印十二行中的每一行。一个值将在循环内递增。问题是,第一行没有增加我的 y 值。所以它只是打印出间隔的 1s。

如果您对我的作业后半部分有任何建议,那会很有帮助。一旦我得到第一行打印 12 位数字,我就可以为报表制作 11 个其他数字。但我觉得可能有一种更简单的方法来获取其余的语句。

public class Sixthree
{
    public static void main (String[] args) 
  {
        int x = 1;
        int y = 1;

        System.out.print("   ");

        for ( int c= x*y; y<= 12; y++)
        {
            System.out.print(c + "  ");
        }
   }
}

我希望输出看起来像这样开始。:

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

但是当前的输出是这样的:

 1 1 1 1 1 1 1 1 1 1 1 1 1

但我希望它最终像这样: http: //math.about.com/blgrid.htm 但没有蓝线。

4

5 回答 5

5

您将得到全 1,因为循环初始化语句int c= x*y将只执行一次for循环。也就是说,它是第一次执行的x=1y=1因为它是作为循环初始化语句而不是在循环体中给出的,所以它永远不会重新评估。for 循环的工作原理是:

循环初始化语句仅在循环开始时执行一次。在每次迭代之后,循环更新表达式被执行并且循环条件被重新评估。for(loop_initialisation;loop_condition;loop_update) { ... }

所以你应该c在循环内更新,比如:

for ( int c= x*y; y<= 12; y++)
{
    c = x*y;
    System.out.print(c + "  ");

}
于 2013-11-07T04:53:47.223 回答
0

您应该使用两个嵌套的 for 循环,一个用于迭代 的值x,另一个用于迭代 的值,y每个内部循环打印 的值,x * y每个外部循环打印一个用于格式化的换行符。

// Pseudo-code //
for(each x) {
    for(each y) {
        print(product);
    }
    print(newline);
}
于 2013-11-07T04:47:52.930 回答
0

为什么它只打印出间隔 1s ?

这是因为您只在 for 循环中分配 c 一次。for (int c= x*y; y<= 12; y++)

当 y 值增加时,c 值不变。值为 1*1=1 (x=1, y=1)。

结果,您会看到它只是打印出间隔 1 秒。

您可以使用嵌套的 for 循环来实现它。

公共课十六{

public static void main(String[] args) {
    int x = 12;
    int y = 12;

    for (int i = 1; i <= x; i++) {
        for (int j = 1; j <= y; j++) {
            System.out.printf("%d ", i * j);
        }
        System.out.println();
    }
}

}

于 2013-11-07T04:58:50.803 回答
0
for (int i = 1; i <= 12; i++) {
    for (int j = 1; j <= 12; j++){      
        System.out.printf ("%3d ", j * i);
    }
    System.out.print ("\n");
}

上面的代码将为您提供类似于如下所示的输出:

  1   2   3   4   5   6   7   8   9  10  11  12
  2   4   6   8  10  12  14  16  18  20  22  24
  3   6   9  12  15  18  21  24  27  30  33  36
  4   8  12  16  20  24  28  32  36  40  44  48
  5  10  15  20  25  30  35  40  45  50  55  60
  6  12  18  24  30  36  42  48  54  60  66  72
  7  14  21  28  35  42  49  56  63  70  77  84
  8  16  24  32  40  48  56  64  72  80  88  96
  9  18  27  36  45  54  63  72  81  90  99 108
 10  20  30  40  50  60  70  80  90 100 110 120
 11  22  33  44  55  66  77  88  99 110 121 132
 12  24  36  48  60  72  84  96 108 120 132 144
于 2013-11-07T05:04:39.517 回答
0
for (int x = 1; x <= 12; x++)
{
    for (int y = 1; y <= 12; y++)
    {
        int multiply = x * y;
        System.out.print(multiply + "\t");
    }
    System.out.println();
}
于 2013-11-07T05:07:05.933 回答