0

我需要一些关于这个增强的 for 循环的帮助。我想了解标准循环和while循环的编码,请。谢谢。

public static int average(int...numbers) {
    int total=0;
    for(int x:numbers)
        total+=x;
    return total/numbers.length;
}
4

3 回答 3

2

在您的示例中 int...numbers 与 "int[] numbers" 相同

因此 for 循环必须遍历该数组。

    for(int i=0; i < numbers.length ; i++)
    {
       int x=numbers[i]
       ...
    }
    
可以直接换。

于 2013-08-06T03:04:14.777 回答
1

您的 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 循环语法则不会。

于 2013-08-06T03:06:38.800 回答
0

假设您的问题是“使用 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;
}

希望这可以帮助您更清楚地理解循环!

于 2013-08-06T03:13:14.173 回答