数组边界之外的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++;
    }
}

我不知道我做错了什么,如果你能帮助我,我将不胜感激。

数组边界之外的c#索引,永远不会跳出for循环

你在循环中增加了两次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++;
}