C# 检查数组是不是“满”
Posted
技术标签:
【中文标题】C# 检查数组是不是“满”【英文标题】:C# Check if array is "full"C# 检查数组是否“满” 【发布时间】:2021-03-15 22:08:09 【问题描述】:我有一个关于数组的问题。
在下面的代码中,计划是为用户提供一个菜单,如果用户选择 nr 1,程序将要求用户输入姓名和年龄以填充数组。但是我希望代码在要求用户输入名称之前检查名称数组是否已满(这是因为名称是用户被要求输入的第一件事)。如果数组是“满的”,它应该写出类似“满”的东西,如果不是,则要求用户输入信息。
这是问题进入图片...
因为只要用户不想退出程序(通过菜单),菜单就会循环,因此可以多次选择此选项。如果用户再次选择相同的选项,则意味着数组已满,并且无法对同一数组进行更多输入。 在我当前的代码中,这个“检查”功能不起作用。我尝试了不同的解决方案,包括 if/else、bool 循环和自定义设计的方法。他们都失败了。
在 *** 上快速搜索,给出了一些想法,但没有人为我工作,虽然其中一个线程似乎是个好方法,但我不明白如何构建这种方法。这是该答案的链接:check if array is full(有趣的部分是“int bookCounter = 0;”
我确信有一种简单的方法可以解决这个问题,但我非常感谢您的帮助!
备注:部分代码是用瑞典语编写的,但我将所有重要部分都翻译成英文。
public void Run()
int choice;
do
//Menyn:
Console.WriteLine("Hello and welcome to this awesome buss-simulator!0", Environment.NewLine);
Console.WriteLine("Please choose an option in the menu below.0", Environment.NewLine);
Menytexts();
choice = CorrectEntryMenu(1, 8); //Method to make sure it's a number. Not related to this.
switch (choice)
case 1:
Console.WriteLine("Welcome, please enter the passengers name:"); //lägg till passa.
string name = Console.ReadLine();
int age = CorrectEntry("We also need the persons age: "); //Another method for correct input. Not the problem.
add_passenger(age, name); //Sending input info to the method containing the arrays.
Console.WriteLine("The passenger is registered. " +
"Press any key to return to the manu");
Console.ReadKey();
break;
case 2:
print_buss();
break;
while (choice != 8);
//Metoder för betyget E
public void add_passenger(int age, string name) //Method containing the arrays and the problems.
string[] passengername = new string[2]; //Array for all the names. temporarily set to 2 spaces.
//idealistically the method for checking the array is inserted here.
for (int n = 0; n < passengername.Length; n++) //To fill array if not full
name = passengername[n];
int[] passengerage = new int[2]; //Array for all the ages. Temporarily set to 2 spaces.
for (int x = 0; x < passengerage.Length; x++) //If the namearray is not full then age is entered.
age = passengerage[x];
【问题讨论】:
您链接的问题/答案似乎是合理的。基本上,数组是固定长度的,所以你需要维护一个变量来计算你向数组添加了多少次。当该计数达到数组的长度时,它已满。但是,如果您当前没有维护一个计数器,那么您如何知道在添加新内容时要写入哪个数组位置? 您可能需要查看可在整个过程中使用的静态变量(方法之外)。跟踪计数器(您最后一次放置值的位置)将是接下来的事情,因此您可以增加它并添加值。如果 counter == array.Count(),则停止 由于您的集合可以是可变大小的,因此它应该是代表它的类型(即List<T>
)而不是数组。
谢谢你们!虽然列表而不是数组的想法是最简单的方法(我猜),但在这个项目中我更喜欢使用数组。有关计数器变量的更多信息,我可以在搜索中使用什么好的关键字?
【参考方案1】:
您已经在 add_passenger 方法中定义了 string[] 乘客名,因此当该方法返回时它不再存在(并且添加的乘客丢失了)。
您可以先将 string[] 乘客名设为实例变量。
还有:
age = passengerage[x];
应该是:
passengerage[x] = age;
【讨论】:
以上是关于C# 检查数组是不是“满”的主要内容,如果未能解决你的问题,请参考以下文章