如何让用户填写数组?

时间:2018-05-13 18:05:27

标签: c#

我希望用户输入一组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,那我该怎么办?

enter image description here

2 个答案:

答案 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());分配新数组的代码