我正在Practiceit.edu上进行练习,遇到了一些麻烦。该练习将编写以下代码:
int total = 25;
for (int number = 1; number <= (total / 2); number++ ) {
total = total - number;
System.out.println(total + " " + number );
}
我的输出是
24 1
22 2
19 3
15 4
10 5
4 6
-3 7
-11 8
-20 9
-30 10
-41 11
-53 12
因为我认为数字从1开始并在12结束(数字<=(总数/ 2))。但是,结果是
24 1
22 2
19 3
15 4
10 5
我不明白这个结果,所以你能帮我解释一下吗?
答案 0 :(得分:1)
问题在于您正在更改total
的值,该值将在循环中每次重新评估
尝试
int total = 25;
int total2 = total;
for (int number = 1; number <= (total / 2); number++ ) {
total2 = total2 - number;
System.out.println(total2 + " " + number );
}
输出
24 1
22 2
19 3
15 4
10 5
4 6
-3 7
-11 8
-20 9
-30 10
-41 11
-53 12
答案 1 :(得分:0)
这是因为每次迭代您的总数都会越来越少。
total = total - number;
即:
//1st iteration
25 - 1 = 24; // outputs 24 1
// 2nd iteration
24 - 2 = 22 // outputs 22 2
// 3rd iteration
22 - 3 = 19 // outputs 19 3
// 4th iteration
19 - 4 = 15 // outputs 15 4
// 5th iteration
15 - 5 = 10 // outputs 10 5
等等。
您要做什么?
答案 2 :(得分:0)
在打印的最后一次迭代期间,总数为10,数字为5。一旦for循环继续,数字增加1,总数减少至4。比较total = 4/2 = 2和number = 6.由于已经进行比较,因此不会打印此结果。因此,您退出了for循环。
答案 3 :(得分:0)
for循环中使用的条件表明number
小于或等于total
的一半(一半)
number <= (total / 2)
最后一行是10 5
此后的所有条件都不满足。