我需要一些有关此增强型for循环的帮助。我想了解标准循环和while循环的编码。感谢。
public static int average(int...numbers) {
int total=0;
for(int x:numbers)
total+=x;
return total/numbers.length;
}
答案 0 :(得分:2)
在您的示例中,int ...数字与“int []数字”
相同因此for循环必须迭代该数组。
for(int i=0; i < numbers.length ; i++)
{
int x=numbers[i]
...
}
将是直接替代。
答案 1 :(得分:1)
你的for循环相当于:
for(int i=0;i<numbers.length;i++){
int x = numbers[i];
total+=x;
}
按顺序检索每个元素,并为每个元素执行循环中的代码。
第一个操作int i=0;
在进入for循环时执行,只执行一次。
第二个操作i<numbers.length
是for循环继续必须为true的条件。这实际上可以是任何布尔表达式。我不建议让你的布尔表达过于复杂,但要注意它的可能性。一个例子:
boolean continueSumming = true;
for(int i=0;i<numbers.length && continueSumming;i++){
if(i>9)
continueSumming=false;
}
这个循环只会迭代最多10个元素,例如,因为continueSumming
变量在第9个元素处被设置为false(记住数组是0索引的。)
最后一次操作i++
也在每次迭代时执行。这里它增加i
。
i
可以在这里被称为sentinel变量,因为它控制循环执行何时结束。更多奖金琐事。
while循环更简单,它会重复,直到某些条件不再为真。这个while循环等同于你的for循环。
int index = 0;
while(index < numbers.length) {
total += numbers[index];
index += 1;
}
每个元素都将添加到total中,当index大于或等于数组的长度时,循环将退出。当while循环的每次迭代都将索引递增1时,它将针对每个元素执行。
虽然循环不是通常用于迭代数组,因为for
循环语法不那么冗长,并且允许sentinel变量i
超出范围,而for循环语法没有。
答案 2 :(得分:0)
假设您的问题是“使用for循环或while循环查找数组数的平均值之间有什么区别?”,请转到此处。
for (x : y)
是一个循环,允许您使用引用y
对数组x
中的每个对象进行操作。
在您的示例中,int total=0;
是平均值计算的总和。
for(int x:numbers)
允许您通过引用变量numbers
x
中的每个整数上运行代码
total+=x;
将循环处理的当前数字添加到总数中,因为平均值计算器
total/numbers.length
除以要返回的数字(数组numbers
中的对象)的总数;给出平均值。
while循环遍历,直到布尔值,语句或条件为false。
William Morrison通过使用一个整数来显示循环正在处理哪个对象,并创建一个检查下一个待处理对象是否存在的条件 - 无论是索引还是整数,都会向您展示它是如何完成的,超出numbers.length
的界限。
numbers[index]
与for循环案例中的x
相同。
标准循环将采用与while循环相同的条件。
for (int index = 0; index < numbers.length; index = index + 1) {
total += x;
}
希望这有助于您更清楚地理解循环!