我刚开始学习Java,所以我的问题可能非常愚蠢。为什么循环会忽略5的倍数?
我正试图解决最简单的问题之一。
修改前面的程序,使得在总和中只考虑三个或五个的数量的倍数,例如, 3,5,6,9,10,12,15,其中n = 17
这是我的代码:
import java.util.Scanner;
public class NewProblem {
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
for (int i = 0; i < n; i++) {
if (i % 5 == 0 || i % 3 == 0) {
System.out.println(i);
}
else {
i++;
}
}
}
}
当运行它,它示出了三个唯一的倍数。例如,下面是输出为N = 17:
所以它只是忽略了5
什么是错的倍数? 对不起,如果这个问题真的很愚蠢。
else包含i ++ - 在for循环期间跳过一个元素 –
,当循环再次开始时,“i”自动递增。当您在'else'语句中执行'i ++'时,您将增加i,然后由于循环而再次增加1。例如,当'i = 1'时,你落在'else'语句并得到'i = 2'。然后,当循环回来时,你会得到'i = 3'。所以'i = 2'从来没有真正被你的代码处理过,因为它立即增加了。 – Tuma
'10'是'5'而不是'3'的倍数。 – Ravikumar