我基本上需要将任意数量内容的数组存储到一个整数中,但之后我必须将它全部回显。
我收到indexoutofrange错误。
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();
}
答案 0 :(得分:2)
因此,数组基于索引为零,这意味着如果你想要一个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
循环中显示索引时,您将希望显示索引而不是数组长度。
还有一点需要注意 - 你在两个单独的for循环中扣除了userArray
变量的值,它在离开循环时没有重置它,所以在方法结束时,{{1变量本来是 - (2 * userArray)而不是我认为你的目标是索引/数组长度。
所以它看起来像这样
userArray
答案 1 :(得分:1)
替换
userArrayinputed[userArray]
与
userArrayinputed[index]
并从userArray--
循环中删除for
。请改用索引来显示当前数字:
for (int index = 0; index < userArray; index++)
{
Console.WriteLine("Number " + index + " Value is:");
...
答案 2 :(得分:1)
数组的索引从0开始到(userArray -1)
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:");
userArrayinputed[index] = int.Parse(Console.ReadLine());
}
for (int index = 0; index < userArray; index++)
{
Console.WriteLine(userArrayinputed[index]);
Console.ReadLine();
}
答案 3 :(得分:0)
首先使用userArray == userArrayinputed.Length评估您的for()
循环,
userArrayinputed[userArray]
尝试访问导致IndexOutOfRangeException
的数组的第(N + 1)个元素。
数组索引从0开始,还记得吗?所以一个数组,比方说3项
int[] arr = new int[3]
数组包含arr[0]
,arr[1]
和arr[2]
项,但没有arr[3]
,这是第4个项。
只需使用userArrayinputed[index]
并删除userArray--
语句中的for()
部分即可。
如果您仍想以相反的顺序输入数字,可以从userArray-1算起:
for (int index = userArray - 1; index >= 0; index--)
{
Console.WriteLine("Number " + index + " Value is:");
userArrayinputed[index] = int.Parse(Console.ReadLine());
}
要显示数字,您应该WriteLine数组元素,而不是数组:
for (int index = userArray - 1; index >= 0; index--)
{
Console.WriteLine(userArrayinputed[index]);
Console.ReadLine();
}
答案 4 :(得分:0)
最初,userArrayinputed [userArray]访问最后一个userarray-1的索引 因为userarray是数组的长度
这是修复,
for (int index = 0; index < userArray; index++, userArray--)
{
Console.WriteLine("Number " + userArray + " Value is:");
userArrayinputed[userArray-1] = int.Parse(Console.ReadLine());
}