首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java循环生成此结果

使用Java循环生成此结果
EN

Stack Overflow用户
提问于 2015-09-06 04:36:40
回答 4查看 149关注 0票数 1

我在java编程方面还是个新手,目前面临一个编码问题。目标是编写一个for-循环,生成以下输出:

代码语言:javascript
复制
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?有人能提供帮助吗?

编辑我设法解决了我的问题与给定的一系列广泛的解决方案如下。我正沿着数组的思路思考,但怀疑我的类是否那么先进(至今)。使用简单的算术解,它工作得很好!会进一步探索的!非常感谢!

EN

回答 4

Stack Overflow用户

发布于 2015-09-06 04:45:26

正如其他人所说,您可以使用数组。不过,不需要再增加另一个变量。要访问适当的值,只需使用i % 3作为索引。这将从索引0、1、2中选择,然后随着i的继续增长而回滚。

代码语言:javascript
复制
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]数组时使用。

票数 2
EN

Stack Overflow用户

发布于 2015-09-06 04:45:52

不需要笨重的数组。只是一些古老的数学:

代码语言:javascript
复制
for (int i = 0; i < 10; i++) {
  int j = 3 - ((i + 2) % 3); // j is what you want
}

整件事是:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2015-09-06 05:10:36

一种思考这个问题的方法:

代码语言:javascript
复制
     1, 3, 2, 1, 3, 2, 1

首先,请注意,您有一个3,2,1序列重复,您刚刚开始它的一半。

因此,3,2,1建议使用%操作符。试一试10,9,8,7

代码语言:javascript
复制
10 % 3  = 1
9 % 3 = 0
8 % 3 = 2
7 % 3 = 1
6 % 3 = 0

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

代码语言:javascript
复制
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,

代码语言:javascript
复制
 (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

因此公式是

代码语言:javascript
复制
( (n+2) % 3 ) + 1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32420097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档