我在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?有人能提供帮助吗?
编辑我设法解决了我的问题与给定的一系列广泛的解决方案如下。我正沿着数组的思路思考,但怀疑我的类是否那么先进(至今)。使用简单的算术解,它工作得很好!会进一步探索的!非常感谢!
发布于 2015-09-06 04:45:26
正如其他人所说,您可以使用数组。不过,不需要再增加另一个变量。要访问适当的值,只需使用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]数组时使用。
发布于 2015-09-06 04:45:52
不需要笨重的数组。只是一些古老的数学:
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));
}发布于 2015-09-06 05:10:36
一种思考这个问题的方法:
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 ) + 1https://stackoverflow.com/questions/32420097
复制相似问题