4 回答
TA贡献1875条经验 获得超3个赞
如果您只在块内递增,i 那么if只要条件x[i] > max评估为false,i就不会递增。并且由于我们使用i作为要检查的数组元素的索引,因此值x[i]永远不会改变,因此循环将永远持续下去。
而且,就其价值而言,当您迭代数组时,for循环更合适,因为它允许您在一个地方定义迭代变量、条件和增量:
int[] x = new int[] { 5, 7, -100, 400, 8 };
int max = x[0];
for(int i = 1; i < x.Length; i++)
{
if (x[i] > max) max = x[i];
}
Console.WriteLine("MAX = " + max);
TA贡献1829条经验 获得超13个赞
如果你 i++ 在 if 块内,你进入一个无限循环:(
while (i < x.Length)
{
if (x[i] > max)
{
max = x[i];
i++;
}
}
假设这个数组 x = new int[] {9, 8}
i = 1
max = 9
while ( 1 < 2 ){//and 1<2 is always true i=1 and x.length=2
if ( 8 > 9){ //false, never enter
max = 8
i++ //never happens, i is always 1
}
}
如果索引有问题,可以使用“foreach”,而不是“while”
int[] x = new int[] { 5, 7, -100, 400, 8 };
int max;
max = x[0];
foreach (int elem in x)
{
if (elem > max)
max = elem;
}
Console.WriteLine("MAX=" + max);
Console.ReadLine();
TA贡献1805条经验 获得超10个赞
让我们假设您的数组是否包含以下值
int[] x = new int[] { 2, 2, 2, 2, 2 };
i++
那么如何在块内找到最大值。您if
将陷入无限循环。
- 4 回答
- 0 关注
- 77 浏览
添加回答
举报