我不了解此练习的解决方案

时间:2019-07-31 02:07:25

标签: java loops

我正在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

我不明白这个结果,所以你能帮我解释一下吗?

4 个答案:

答案 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

此后的所有条件都不满足。