我需要一些关于这个增强的 for 循环的帮助。我想了解标准循环和while循环的编码,请。谢谢。
public static int average(int...numbers) {
int total=0;
for(int x:numbers)
total+=x;
return total/numbers.length;
}
我需要一些关于这个增强的 for 循环的帮助。我想了解标准循环和while循环的编码,请。谢谢。
public static int average(int...numbers) {
int total=0;
for(int x:numbers)
total+=x;
return total/numbers.length;
}
在您的示例中 int...numbers 与 "int[] numbers" 相同
因此 for 循环必须遍历该数组。
for(int i=0; i < numbers.length ; i++)
{
int x=numbers[i]
...
}
可以直接换。
您的 for 循环相当于:
for(int i=0;i<numbers.length;i++){
int x = numbers[i];
total+=x;
}
每个元素按顺序检索,循环内的代码对每个元素执行。
第一个操作int i=0;
在进入 for 循环时执行,并且只执行一次。
第二个操作i<numbers.length
是 for 循环继续执行的条件。这实际上可以是任何布尔表达式。我不建议让你的布尔表达式过于复杂,但要注意它的可能。一个例子:
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
在这里可以称为哨兵变量,因为它控制循环执行何时结束。为您提供更多奖励琐事。
while 循环更简单,它会重复直到某个条件不再为真。这个 while 循环相当于你的 for 循环。
int index = 0;
while(index < numbers.length) {
total += numbers[index];
index += 1;
}
每个元素都将被添加到总数中,当 index 大于或等于数组的长度时,循环将退出。由于 while 循环的每次迭代都将索引递增 1,因此它将针对每个元素执行。
While 循环通常不用于遍历数组,因为for
循环语法不那么冗长,并且允许哨兵变量i
超出范围,而 for 循环语法则不会。
假设您的问题是“使用 for 循环或 while 循环来查找数字数组的平均值有什么区别?”,你去吧。
for (x : y)
是一个循环,它允许您y
使用引用对数组中的每个对象进行操作x
。
在您的示例中,int total=0;
是平均计算的总数。
for(int x:numbers)
允许您numbers
通过的引用变量在每个整数上运行代码x
total+=x;
将循环正在处理的当前数字添加到总数中,作为平均计算器应该
total/numbers.length
将总数除以numbers
要返回的数字(数组中的对象)的数量;给出平均值。
while 循环循环直到布尔值、语句或条件为假。
威廉莫里森向您展示了它是如何完成的,通过使用整数来显示循环正在处理的对象,并创建一个条件来检查下一个要处理的对象是否存在——它的索引或整数是否存在的界限numbers.length
。
numbers[index]
与 for 循环的情况相同x
。
标准循环将采用与 while 循环相同的条件。
for (int index = 0; index < numbers.length; index = index + 1) {
total += x;
}
希望这可以帮助您更清楚地理解循环!