使用大小的用户输入填充数组在 C# 中不起作用

本文关键字:数组 不起作用 填充 输入 用户 | 更新日期: 2023-09-27 18:32:07

我想让用户定义数组的大小和其中的所有数字,所以这就是我想到的:

int []arr={0};
Console.WriteLine("Please enter the size of the array:");
size = Console.Read();
for(int i=0; i<size; i++)
{
    Console.WriteLine("Please enter the next number in the array, it's position is: " + i);
    arr[i] = Console.Read();
}

当我尝试运行时,它会给我一个"索引超出范围"错误。如果有人能指出我做错了什么,我将不胜感激。

编辑:回答后,我对代码进行了一些更改,现在看起来像这样:

Console.WriteLine("Please enter the size of the array:");
input = Console.ReadLine();
size = int.Parse(input);
int[] arr = new int[size];
for(int i=0; i<size; i++)
{
    string b;
    Console.WriteLine("Please enter the next number in the array, it's position is: " + i);
    b = Console.ReadLine();
    arr[i] = int.Parse(b); 
}

所以现在数组可以更大,里面的数字也可以更大,再次感谢您的帮助!

使用大小的用户输入填充数组在 C# 中不起作用

您需要在

从用户那里获得输入后初始化数组:

Console.WriteLine("Please enter the size of the array:");
int size = int.Parse(Console.ReadLine()); //you need to parse the input too
int[] arr = new int[size];
for(int i=0; i < arr.Length; i++)
{
    Console.WriteLine("Please enter the next number in the array, it's position is: " + i);
    arr[i] = int.Parse(Console.ReadLine()); //parsing to "int"
}

注意:您不应该使用 Console.Read(),它返回注释中提到的 Szabolcs Dézsi 字符的 ASCII。您应该改用Console.ReadLine()

您需要重新实例化数组对象:

int []arr={0};
Console.WriteLine("Please enter the size of the array:");
size = Console.Read();
arr=new int[size];
for(int i=0; i<size; i++){
   Console.WriteLine("Please enter the next number in the array, it's position is: " + i);
   arr[i] = Console.Read();
            }

仍然不是最理想的,但这将阻止用户输入非数字数据。每次不断提示,直到数据有效。

Console.WriteLine("Please enter the size of the array:");
int size;
while(!int.TryParse(Console.ReadLine(), out size))
{
    Console.WriteLine("Please enter the size of the array:");
}
var arr = new int[size];
for (int i = 0; i < size; i++)
{
    Console.WriteLine("Please enter the next number in the array, it's position is: " + i);
    int currentElement;
    while (!int.TryParse(Console.ReadLine(), out currentElement))
    {
        Console.WriteLine("Please enter the next number in the array, it's position is: " + i);
    }
    arr[i] = currentElement;
}

我不会使用 Console.Read ,因为这样您一次只能读取一个字符。所以你最多只能读取 0-9 的数组大小,如果你输入 15,数组的长度将是 1,下一个Read将读取 5 并填写第一个元素。