我编写了以下代码,以获取从0到1000的所有数字,它们是三的倍数:
public class Hi {
public static void main(String[] args) {
for(int i = 0; i<1000; i++)
if(i % 3 == 0)
System.out.println(i);
}
}
现在我想将这些数字加在一起并在循环后打印结果。
答案 0 :(得分:5)
如果迭代3的倍数,则无需测试3的多重性。最后,要添加数字,您应该执行算术运算。像,
long sum = 0;
for (int i = 3; i < 1000; i += 3) {
sum += i;
}
System.out.println(sum);
或者,在Java 8+中,使用IntStream
(对于相同的结果),如
System.out.println(IntStream.rangeClosed(1, 1000 / 3).map(i -> i * 3).sum());
答案 1 :(得分:1)
....因为我们都需要java-8和lambdas oneday ......
final List<Integer> myList = new ArrayList<>(Arrays.asList(new Integer[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 4, 2, 2 }));
final int sum = myList.stream().filter((i) -> i.intValue() % 3 == 0).mapToInt(Integer::intValue).sum();
System.out.println("Sum of divisible by 3 is " + sum);
答案 2 :(得分:-1)
当您浏览1到1000之间的数字时,可以将3的倍数添加到列表中。然后,您可以浏览该列表,并将该列表中的每个数字添加到总和中。
public class Hi {
public static void main(String[] args) {
int[] multiples = new int[1000]; // default initialized with zeroes
mIndex = 0;
for(int i = 0; i<1000; i++) {
if(i % 3 == 0) {
System.out.println(i);
multiples[mIndex] = i;
mIndex++;
}
}
int sum2 = 0;
for(int i2 = 0; i2<mIndex; i2++)
sum2 += multiples[i2];
System.out.println(sum2);
}
}
但这需要两次完成数字,并创建另一个列表。从1到1000,将3的倍数加到总和上会更简单,更有效。
public class Hi {
public static void main(String[] args) {
int sum = 0;
for(int i = 0; i<1000; i++)
if(i % 3 == 0) sum += i;
System.out.println(sum);
}
}
编辑:正如另一张海报所说,有更聪明的方法可以做到这一点。还有用于在O(1)中得到这个总和的数学公式。