使用大小的用户输入填充数组在 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);
}
所以现在数组可以更大,里面的数字也可以更大,再次感谢您的帮助!
您需要在
从用户那里获得输入后初始化数组:
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 并填写第一个元素。