gpt4 book ai didi

java - 我尝试编写该程序,但它没有按照我想要的方式工作。请告诉我我做错了什么

转载 作者:行者123 更新时间:2023-12-01 10:19:38 24 4
gpt4 key购买 nike

问题是:修改上面的程序,将 1 到 1000 之间所有能被 7 整除的数字相加。这是我的代码:

int x=1;    
int y=1000;
int number=x;
int sum=0;
while (number%7==0) {
sum=sum+number;
++number;
}
System.out.printf("The sum of all numbers divisible by 7 from 1 to 100 is %d", sum);

最佳答案

当你知道界限时,我真的不喜欢使用 while 循环的方法。

首先,首先找到尽可能高的值:

int maximum = 1000 - 1000 % 7;//994

然后从第一个循环到最后一个,步长为 7。

for(int x = 7; x <= maximum; x += 7)
sum += x;

无需检查慢模,因为我们有两个界限并且以 7 为步长增加。另请注意 <==如果我们想包含最高的,这里很重要。

<小时/>

您仍然可以使用while来做到这一点如果你愿意,但在你的例子中,你会循环直到找到一个不能被 7 整除的数字。你从 1 开始,所以你永远不会输入。您需要在边界之间循环并使用 if 进行验证如果当前数字能被 7 整除,则求和。

既然你知道界限,for上面显示的循环看起来更干净。

<小时/>

为了完整起见,使用 Java 8 您可以在 IntStream 的帮助下实现此目的:

IntStream
.rangeClosed(7, maximum)
.filter(i -> i % 7 == 0)
.sum();

但这会慢一些,如 range只允许增量 1,因此我们处理每个数字并对每个数字执行取模。

关于java - 我尝试编写该程序,但它没有按照我想要的方式工作。请告诉我我做错了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687645/

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