我在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?有人可以提供一些帮助吗?
修改的 我设法通过以下广泛的解决方案解决了我的问题。我正在思考阵列,但怀疑我的课程是先进的(还)。使用简单的算术解决方案,它完美地工作!将进一步探索!非常感谢!
答案 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;
}