将用户输入返回到未定义的数组?

时间:2017-06-20 06:04:47

标签: c# arrays

我是一名从事家庭作业的学生。我的问题是我试图根据一个数组的长度收集大量用户输入,并将这些输入返回到一个相同长度的新数组中。第二个阵列不能进行硬编码,因为它必须是动态的,并根据第一个阵列中有多少用户输入而改变。这是我的代码。

public static decimal[] PromptForDecimals(string[] array1)
{
    for (int i = 0; i < array1.Length; i++)
    {
        Console.WriteLine("");
        string inputString = Console.ReadLine();
        decimal input;
        while (!decimal.TryParse(inputString, out input))
        {
            Console.WriteLine("Please enter a number value.");
            inputString = Console.ReadLine();
        }

        decimal[] inputArray;
        inputArray[i] = input;

        return inputArray;

基本上,我尝试创建一个decimal值数组,以对应array1的字符串值。问题是我无法将值添加到未定义的数组中,因为它们超出了范围。我尝试使用ArrayList inputArray,但是我收到了无效的强制转换错误。

有人有什么想法吗?

5 个答案:

答案 0 :(得分:0)

public static decimal[] PromptForDecimals(string[] array1)
    {
        decimal[] inputArray = new decimal[array1.Length];
        for (int i = 0; i < array1.Length; i++)
        {
            Console.WriteLine("");
            string inputString = Console.ReadLine();

            decimal input;
            while (!decimal.TryParse(inputString, out input))
            {
                Console.WriteLine("Please enter a number value.");
                inputString = Console.ReadLine();
            }

            inputArray[i] = input;

            return inputArray;

答案 1 :(得分:0)

你可以用它。我希望它对你有用。

public static decimal[] PromptForDecimals(string[] array1)
{
    decimal[] inputArray = new decimal[array1.Length];
    for (int i = 0; i < array1.Length; i++)
    {
        Console.WriteLine("");
        string inputString = Console.ReadLine();

        decimal input;
        while (!decimal.TryParse(inputString, out input))
        {
            Console.WriteLine("Please enter a number value.");
            inputString = Console.ReadLine();
        }

        inputArray[i] = input;                
    }

    return inputArray;
}

答案 2 :(得分:0)

首先,您应该将return语句和inputArray的声明放在for循环之外。

其次,要创建inputArray,您只需要创建一个长度为inputArray.Length的数组!

// remember to put this before the for loop.
decimal[] inputArray = new decimal[inputArray.Length];

在for循环中,您可以写:

// don't redeclare inputArray again!
inputArray[i] = input;

在for循环之后,返回inputArray

return inputArray;

答案 3 :(得分:0)

以下是解决方案。

1)使用语句decimal[] inputArray,您只声明了一个数组,但没有创建一个数组。

2)您必须在进入循环

之前创建它

3)如下图所示,在创建数组时,您可以为其赋予与inputArray相同数量的元素

public static decimal[] PromptForDecimals( string[] array1 )
{
    decimal[] inputArray = new decimal[array1.Length];
    for( int i = 0; i < array1.Length; i++ )
    {
        Console.WriteLine( "" );
        string inputString = Console.ReadLine();

        decimal input;
        while( !decimal.TryParse( inputString, out input ) )
        {
            Console.WriteLine( "Please enter a number value." );
            inputString = Console.ReadLine();
        }
        inputArray[i] = input;
    }

    return inputArray;
}

答案 4 :(得分:0)

让您的生活更轻松,并使用LINQ。所有数组的创建以及确保您使用正确的索引都是为您完成的。

public static decimal[] PromptForDecimals(string[] array1)
{
    return
        array1
            .Select(x =>
            {
                Console.WriteLine(x);
                string inputString = Console.ReadLine();
                decimal input;
                while (!decimal.TryParse(inputString, out input))
                {
                    Console.WriteLine("Please enter a number value.");
                    inputString = Console.ReadLine();
                }
                return input;
            })
            .ToArray();
}