数组边界之外的c#索引,永远不会跳出for循环
本文关键字:循环 for 永远 边界 索引 数组 | 更新日期: 2023-09-27 17:50:20
我的程序编译了,但是在运行时它从来没有跳出循环,并且说数组太大。这是我的代码:
public class ComparableArray
{
public static void Main()
{
taxpayer[] taxArray = new taxpayer[5];
int x;
for(x= 0; x < taxArray.Length; ++x)
taxArray[x] = new taxpayer();
Console.Write("Enter Social Security Number for taxpayer {0}: ", x+1);
taxArray[x].SSN = Console.ReadLine();
Console.Write("Enter gross income for taxpayer {0}: ", x+1);
taxArray[x].Income = Convert.ToDouble(Console.ReadLine());
taxpayer.getRates();
x++;
}
}
我不知道我做错了什么,如果你能帮助我,我将不胜感激。
你在循环中增加了两次x:
曾经在这里:
for(x= 0; x < taxArray.Length; ++x)
x++;
不需要在循环体中增加循环计数器x++;
。这个循环已经做到了。
for循环的声明应该稍微不同:
// notice the inclusion of the variable type in the for
// and you want to use x++, not ++x
for(int x= 0; x < taxArray.Length; x++)
但是,真正的问题是循环内x++
的递增。由于for
循环声明包含一个自增式(x++),因此不需要在循环内部也进行自增。
所有的答案都是错误的,谢谢你的帮助。我用了两次x;一次在for循环中,一次在控制台中。写,我只是把for循环改为y,效果很好。
int x=0;
int y;
for(y= 0; y < taxArray.Length; ++y){
taxArray[x] = new taxpayer();
Console.Write("Enter Social Security Number for taxpayer {0}: ", x+1);
taxArray[x].SSN = Console.ReadLine();
Console.Write("Enter gross income for taxpayer {0}: ", x+1);
taxArray[x].Income = Convert.ToDouble(Console.ReadLine());
taxpayer.getRates();
x++;
}