增强了For Loop to Standard Loop

时间:2013-08-06 03:01:14

标签: java

我需要一些有关此增强型for循环的帮助。我想了解标准循环和while循环的编码。感谢。

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

3 个答案:

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

希望这有助于您更清楚地理解循环!