使用Java For Loop生成此结果

时间:2015-09-06 04:36:41

标签: java for-loop

我在java编程方面相当新,目前面临编码问题。目标是编写一个产生以下输出的for循环:

10 * 1 = 10
9 * 3 = 27
8 * 2 = 16
7 * 1 = 7
6 * 3 = 18
5 * 2 = 10
4 * 1 = 4
3 * 3 = 9
2 * 2 = 4
1 * 1 = 1

虽然我可能清楚地知道倒计时和循环数量,但令我困惑的是如何获得一个循环来打印1,3,2,1,3,2,1?有人可以提供一些帮助吗?

修改的 我设法通过以下广泛的解决方案解决了我的问题。我正在思考阵列,但怀疑我的课程是先进的(还)。使用简单的算术解决方案,它完美地工作!将进一步探索!非常感谢!

4 个答案:

答案 0 :(得分:2)

正如其他人所说,你可以使用数组。但是,不需要增加另一个变量。要访问正确的值,只需使用i % 3作为索引。这将从索引0,1,2中选择,然后在i继续增加时回绕。

int [] mult = {1, 3, 2};
for (int i = 0; i < 10; i++) {
    int result = (10 - i) * mult[i % 3];
    System.out.println((10 - i) + " * " + mult[i % 3] + " = " result);
}

顺便说一下,%运算符是模运算符。在通常的做法中,它用于在划分两个数字时得到余数。当您使用x % 3时,为了增加x的值,结果将始终循环显示小于3的值,这使其非常适合在[1, 3, 2]数组中循环使用。< / p>

答案 1 :(得分:2)

不需要笨重的数组。只是一个小学校的数学:

for (int i = 0; i < 10; i++) {
  int j = 3 - ((i + 2) % 3); // j is what you want
}

整件事:

for (int i = 0; i < 10; i++) {
  int j = 3 - ((i + 2) % 3); // j is what you want
  System.out.println((10 - i) + " * " + j + " = " + ((10 - i) * j));
}

答案 2 :(得分:2)

考虑这个问题的方法:

     1, 3, 2, 1, 3, 2, 1

首先注意你有一个重复的3,2 1序列,你只是在中途开始。

所以3,2,1建议使用%运算符。试试10,9,8,7

10 % 3  = 1
9 % 3 = 0
8 % 3 = 2
7 % 3 = 1
6 % 3 = 0

所以我们出现了2,1,0,我们想要3,2,1,所以加1

10 % 3  = 1 + 1 = 2
9 % 3 = 0 + 1 = 1
8 % 3 = 2 + 1 = 3
7 % 3 = 1 + 1 = 2
6 % 3 = 0 + 1 = 1

(我们现在正在做(n%3)+ 1)

但是我们想要从1开始而不是在2开始,所以调整n,

 (10 + 2) % 3  = 0 + 1 = 1
(9 + 2) % 3 = 2 + 1 = 3
(8 + 2) % 3 = 1 + 1 = 2
(7 + 2) % 3 = 0 + 1 = 1
(6 + 2) % 3 = 2 + 1 = 3

因此公式是

( (n+2) % 3 ) + 1

答案 3 :(得分:0)

您可以尝试这样的事情:

int num = 1;

for (int i = 0; i < 10; i++) {
    System.out.println(num);
    num--;
    if (num == 0) num = 3;
}