我正在学习Java课程入门,并且正在参加实践测验。这些测验没有评分,也没有计入我们的成绩,所以我想我会在这里发布。
在通常情况下,我只需要复制代码并将其粘贴到IDE中即可,但是我想知道是否有一种逻辑上思考的方法,因此我可以找出答案。在实际考试中,我们不允许使用日食或类似方法找出答案,而这个问题将花费很长时间才能手动完成,并计算它通过for循环的次数。
这是问题:
for循环中的print语句执行多少次?
for(int i = 0; i <347589; i++) {
System.out.print("Give me coffee!");
}
答案 0 :(得分:2)
您基本上可以只将for
循环的上限作为答案,在这种情况下为347,589。为了得到这个答案,请考虑一个边界更小的for循环:
for (int i=0; i < 5; ++i) {
System.out.println("Give me coffee!");
}
通过检查,我们可以看到此循环将在以下情况下执行:
i = 0
i = 1
i = 2
i = 3
i = 4
在i = 5
时不会执行,因为这使条件失败。因此,它执行五次,与for循环的上限相同。我们可以将此问题外推到您的问题中,以得到347,589作为答案。
答案 1 :(得分:1)
没有通用方法来计算while循环在运行之前将执行多少次。这个事实称为暂停问题的不确定性。 For循环只是while循环的语法糖,因此这也适用于for循环。停顿的问题是很多很棒的书的主题,其中包括道格拉斯·霍夫施塔特的Gödel,Escher和Bach 。
但是,您给出的for循环非常简单:它会增加i
直到i
不再满足i < 347589
。变量i
从0开始并以一递增:i++
等效于i = i + 1;
。因此i
取所有连续值:0、1、2、3、4,...,347588,并且每次执行行System.out.println("Give me coffee!");
。
然后i
的值为347589,不再满足i < 347589
,因此循环暂停。
总计,“给我咖啡!”被印刷了347589次。
如果您不喜欢for循环的语法,则您的代码等效于使用while循环的以下代码:
int i = 0;
while (i < 347589)
{
System.out.print("Give me coffee!");
i = i + 1;
}
答案 2 :(得分:0)
由于您有一个仅执行多次语句的简单for循环,因此您可以简单地进行计数。您可能知道循环从i=0
开始执行,并在每次执行后加1,直到条件i<347589
为假。所以:
i=0 -> once (1.)
i=1 -> twice (2.)
...
i=347588 -> 347589 times (347589.)
i=347589 -> loop stops.
所以print语句将被执行347589次。
答案 3 :(得分:0)
很显然,FOR
循环不是Java特定的问题。
要正确理解FOR
循环,我们举一个简单的例子。
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
此代码将打印从0到10(不包括)的所有数字。
因此,范围0-10有10个不同的值:
0
1
2
3
4
5
6
7
8
9
当i
变为10 FOR
时,将不满足循环语句(i <10),并且循环将中断。
因此,在这种情况下,"Give me coffee!"
将以相同的逻辑打印347589
次。
答案 4 :(得分:0)
在课程中,他们可能只想检查您的编码基础知识。在这些类型的问题中,您应该最重要地注意4-5件事。
1-索引的起点。
2-索引的终点,还检查是否包含该值。
3-索引的增减,无论索引是增减1还是其他值或模式。
4-它们是否在循环内是任何break语句,这也表明循环将一直运行到特定条件。
在该示例中,您给定的起点是0,终点是347589(不包括),增量为1,因此循环将运行。 347589-0 + 1(基于0的索引)= 347589次。