如何根据用户输入创建数组长度

时间:2019-09-25 17:08:51

标签: c# arrays

所以我目前很困惑(请记住我是编码新手)。 我目前正在尝试创建一个程序,该程序允许用户输入要在数组中输入的数字(然后根据该长度创建一个数组),请用户将数字输入到所需位置。 我的代码当前如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Arrays
{
    class Program
    {
        static void Main(string[] args)
        {
            //Variables
            int[] array1 = new int[0];
            int TotalArray, position, Number;

            //Main Program
            Console.WriteLine("Hello, welcome to creating your own array!");
            Console.WriteLine("How many numbers do you wish to add to the array?: ");
            TotalArray = int.Parse(Console.ReadLine());
            Console.ReadKey();
            {
                Console.WriteLine("What position would you like to add your number to?: ");
                position = int.Parse(Console.ReadLine());
                if (position < TotalArray)
                {
                    Console.WriteLine("What number would you like to add to position " + position);
                    Number = int.Parse(Console.ReadLine());
                    array1[position] = Number;
                    Console.WriteLine("Testing: " + array1[position]);
                    Console.ReadKey();
                }
                else
                {
                    Console.WriteLine("Error! You entered your position higher than your total array!");
                }
            }
        }
    }
}

但是,我不了解如何根据用户输入创建数组长度。 我必须尝试这样做:

            Console.WriteLine("Hello, welcome to creating your own array!");
            Console.WriteLine("How many numbers do you wish to add to the array?: ");
            TotalArray = int.Parse(Console.ReadLine());
            int i = Convert.ToInt32(TotalArray);
            int[] array1 = new int[i];

但是出现此错误: A local variable or function named 'array1' is already defined in this scope 我不太了解这段代码的作用:

            int i = Convert.ToInt32(TotalArray);
            int[] array1 = new int[i];

但是,我看到它在stackoverflow上提到,并以为id尝试实现它。我有点理解第二行,但是并没有真正了解整个转换过程。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

首先,这是编写代码的正确方法

Console.WriteLine("Hello, welcome to creating your own array!");
Console.WriteLine("How many numbers do you wish to add to the array?: ");
TotalArray = int.Parse(Console.ReadLine());
array1 = new int[TotalArray];

第三行表示读取输入到控制台的最后一行,然后将其转换为 int 类型的值,然后将该值存储在变量 TotalArray

第四行表示构造一个长度为 TotalArray 的新数组,然后将结果数组存储到变量 array1

这在您写int[] array1 = new int[i];时不起作用,因为这意味着创建一个名为 array1 的新变量,然后创建一个长度为 i 的新数组存储在新创建的变量 array1

正如您在代码中看到的那样,您已经定义了array1

此处:

//Variables
int[] array1 = new int[0];

这就是为什么您收到消息的原因: A local variable or function named 'array1' is already defined in this scope

但是对初学者来说很好。

答案 1 :(得分:2)

首先,您不需要将TotalArray转换为整数,因为您已经将用户的回复解析为整数。因此,省略i。接下来,您要声明一个新的array1。相反,只需为同一参考分配一个新的参考

array1 = new int[TotalArray];

至于循环。这是朴素的版本,但是如果您需要责骂用户两次选择同一职位,则需要做更多的工作。

int requestCount = TotalArray;

while (requestCount > 0)
{
    requestCount = requestCount - 1;

    Console.WriteLine("What position would you like to add your number to? (0 - " 
        + (TotalArray - 1) + "): ");
    position = int.Parse(Console.ReadLine());
    if (position < TotalArray)
    {
        Console.WriteLine("What number would you like to add to position " + position);
        Number = int.Parse(Console.ReadLine());
        array1[position] = Number;
        Console.WriteLine("Testing: " + array1[position]);
        Console.ReadKey();
    }
    else
    {
        Console.WriteLine("Error! You entered your position higher than your total array!");
    }
}