所以我目前很困惑(请记住我是编码新手)。 我目前正在尝试创建一个程序,该程序允许用户输入要在数组中输入的数字(然后根据该长度创建一个数组),请用户将数字输入到所需位置。 我的代码当前如下所示:
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尝试实现它。我有点理解第二行,但是并没有真正了解整个转换过程。
任何帮助将不胜感激!
答案 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!");
}
}