gpt4 book ai didi

c# - 为什么我在此代码中收到 IndexOutOfRangeException?

转载 作者:行者123 更新时间:2023-11-30 20:46:24 24 4
gpt4 key购买 nike

我基本上需要将任意数量的内容数组存储为一个整数,但之后我必须将其全部回显。

我收到索引超出范围错误。

for (int index = 0; index < userArray; index++, userArray--)
{
Console.WriteLine("Number " + userArray + " Value is:");
userArrayinputed[userArray] = int.Parse(Console.ReadLine());
}

所有代码:

class Program
{
static void Main(string[] args)

{
Console.WriteLine("What is the Size of the Array?");
string inputArray = Console.ReadLine();
int userArray = Convert.ToInt32(inputArray);

int[] userArrayinputed = new int[userArray];

for (int index = 0; index < userArray; index++, userArray--)
{
Console.WriteLine("Number " + userArray + " Value is:");
userArrayinputed[userArray] = int.Parse(Console.ReadLine());
}
for (int index = userArray; index > 0; index--, userArray--)
{
Console.WriteLine(userArrayinputed);
Console.ReadLine();
}

正确的代码:

class Program
{
static void Main(string[] args)
{
Console.WriteLine("What is the Size of the Array?");
string inputArray = Console.ReadLine();
int userArray = Convert.ToInt32(inputArray);
int maxArray = userArray;

int[] userArrayinputed = new int[userArray];

for (int index = 0; index < userArray; index++)
{
Console.WriteLine("Number " + index + " Value is:");
userArrayinputed[index] = int.Parse(Console.ReadLine());
}
for (int index = 0; index < userArray; index++)
{
Console.WriteLine(userArrayinputed[index]);
Console.ReadLine();
}

最佳答案

所以,数组的索引是基于零的,这意味着如果你想要一个 10 的数组那么索引器将是 0-9 .

所以当你向上移动一个数组(0-9)时,你想要一个for的顶部循环为 < (小于数组长度)当你向下移动数组( 9-0 )时,你希望下限为 >= 0 (小于或等于数组的底部)否则您将开始尝试访问 10 (数组长度)并得到 OutOfRangeException .

例如:

for (int i = 0; i < myArray.Length -1; i++)
{ ... }

for (int i = myArray.Length - 1; i >= 0; i--)
{ ... }

当您在 for 中显示索引时循环你会想要显示索引而不是数组长度。

还有一些注意事项 - 您正在扣除 userArray 的值变量在两个单独的 for 循环中,当它离开循环时不会重置它,所以在方法结束时,userArray变量本来是 -(2*userArray) 而不是我认为你想要的是索引/数组长度。

所以它看起来像这样

static void Main(string[] args)

{
Console.WriteLine("What is the Size of the Array?");
string inputArray = Console.ReadLine();
int userArray = Convert.ToInt32(inputArray);

int[] userArrayinputed = new int[userArray];

for (int index = 0; index < userArray; index++)
{
Console.WriteLine("Number " + index + " Value is:");
//note you will get an error here if you try and parse something that isn't an interger
userArrayinputed[index] = int.Parse(Console.ReadLine());
}
for (int index = userArray -1; index >= 0; index--)
{
Console.WriteLine(userArrayinputed[index]);

}
Console.ReadLine();
}

关于c# - 为什么我在此代码中收到 IndexOutOfRangeException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27032707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com