我希望用户输入一组int
s,然后程序找到最大值
每次运行它都会崩溃的问题。
这是我的代码:
public int maximum()
{
int arrSize = 0;
int [] list = new int [arrSize];
Console.Write("how many numbers u want to find the max between them : ");
arrSize = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("\nplz enter the list of numbers : ");
for (int j = 0; j < arrSize; j++)
list[j] = int.Parse(Console.ReadLine());
int max = list[0];
for (int i = 1; i < arrSize;i++ )
if (list[i] > max) max = list[i];
return max;
}
我已经尝试了Convert.ToInt16
,那我该怎么办?
答案 0 :(得分:1)
Am_I_Helpful的评论是正确的。
在第int [] list = new int [arrSize];
行
arrSize = Convert.ToInt32(Console.ReadLine());
行
@Am_I_Helpful:你为什么不发布这个答案?
答案 1 :(得分:0)
您的错误是由于分配一个0 Len的数组引起的,因为您的程序是:
int arrSize = 0;
int [] list = new int [arrSize];
当用户输入和arraySize时,这不会改变已分配的数组的大小,因此,例如,如果用户输入10,则尝试索引访问10循环中数组的元素,而实际上您的数组大小仅为0,导致索引超出范围异常。
针对此特定问题的解决方案是在arrSize
arrSize = Convert.ToInt32(Console.ReadLine());
分配新数组的代码