gpt4 book ai didi

java - 需要帮助通过省略其中一些来计算数字的总和

转载 作者:行者123 更新时间:2023-12-02 18:48:25 24 4
gpt4 key购买 nike

#1。我需要编写一个Java程序,计算从1到10,000(包括1和10,000)的数字之和,但忽略能被3整除的数字和百位数字为2或3的数字(例如8200或5312)。

我开始但没有工作:

public class Sum10000 {

public static void main(String[] arg) {
long i = 0;
long sum = 0;

while (i != 10000) {
sum = sum + i;
i++;

if ((i % 3) == 0 || (i >= 200 && i <= 399) || (i >= 1200 && i <= 1399)
|| (i >= 2200 && i <= 2399) || (i >= 3200 && i <= 3399) || (i >= 4200 && i <= 4399)
|| (i >= 5200 && i <= 5399) || (i >= 6200 && i <= 6399) || (i >= 7200 && i <= 7399)
|| (i >= 8200 && i <= 8399) || (i >= 9200 && i <= 9399)) {
continue;
}
System.out.println( i);
System.out.println(sum);

}
}
}

最佳答案

您应该仅在测试条件后增加总和。

while (i != 10000) {
i++;
if ((i % 3) == 0 || (i >= 200 && i <= 399) || (i >= 1200 && i <= 1399) ||
(i >= 2200 && i <= 2399) || (i >= 3200 && i <= 3399) || (i >= 4200 && i <= 4399) ||
(i >= 5200 && i <= 5399) || (i >= 6200 && i <= 6399) || (i >= 7200 && i <= 7399) ||
(i >= 8200 && i <= 8399) || (i >= 9200 && i <= 9399)) {
continue;
}
sum += i;
System.out.println(i);
System.out.println(sum);
}

使用Stream可以简化此操作:

System.out.println(IntStream.rangeClosed(1, 10000)
.filter(x -> x % 3 != 0 && x / 100 % 10 != 2 && x / 100 % 10 != 3).sum());

关于java - 需要帮助通过省略其中一些来计算数字的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67111587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com