C# 二维数组匹配和 Return 1 维
C# 2D Array Match and Return 1 Dimension
我有一个二维字符串数组,格式为 [Name, Code],其中 Code 是单个大写字母。我想 return 数组中的所有 'Names' 基于 'Code' 的匹配,以增加我需要根据用户输入执行此操作的复杂性,直到输入标记值。
示例:array = [Fred, X],[Bryan, Y],[Angus,X],用户输入是 'X',想要 return Fred 和 Angus。我的尝试-
string CodeInput;
const string STOP = "999";
Write("\nEnter a Code or 999 to stop >> ");
CodeInput = ReadLine();
do
{
for (int Name = 0, Code =1; Name < array.GetLength(0); Name++)
{
if (CodeInput == array[Name,Code])
{
for (int NameB = 0; NameB < array.GetLength(0); NameB++)
WriteLine(array[NameB, 0]);
}
else
{
Write("\nIncorrect code");
}
Write("\nEnter a Code or 999 to stop >> ");
CodeInput = ReadLine();
}
}
while (CodeInput != STOP);
}
匹配结果列出了所有名称,而不仅仅是匹配。我明白为什么它不起作用——第一个数组循环找到一个匹配项,然后第二个数组循环只是吐出所有名字——但我不知道如何让它工作。是的,这是家庭作业,我希望能够使用字典而不是数组,但不幸的是这不是一个选项。
第二个 for 循环吐出所有的名字,因为这正是你要他做的。
for (int NameB = 0; NameB < array.GetLength(0); NameB++)
WriteLine(array[NameB, 0]);
相当于显示所有名字
您想做的是:
do
{
// Flag to indicate that you've found at least one match.
bool isFound = false;
for (int Name = 0, Code = 1; Name < array.GetLength(0); Name++)
{
if (CodeInput == array[Name, Code])
{
Console.WriteLine(array[Name, 0]);
isFound = true;
}
}
// If no matches found - display message
if (!isFound)
{
Console.Write("\nIncorrect code");
}
// Moved out of cycle, so it won't be asked every iteration.
Console.Write("\nEnter a Code or 999 to stop >> ");
CodeInput = Console.ReadLine();
}
while (CodeInput != STOP);
我有一个二维字符串数组,格式为 [Name, Code],其中 Code 是单个大写字母。我想 return 数组中的所有 'Names' 基于 'Code' 的匹配,以增加我需要根据用户输入执行此操作的复杂性,直到输入标记值。
示例:array = [Fred, X],[Bryan, Y],[Angus,X],用户输入是 'X',想要 return Fred 和 Angus。我的尝试-
string CodeInput;
const string STOP = "999";
Write("\nEnter a Code or 999 to stop >> ");
CodeInput = ReadLine();
do
{
for (int Name = 0, Code =1; Name < array.GetLength(0); Name++)
{
if (CodeInput == array[Name,Code])
{
for (int NameB = 0; NameB < array.GetLength(0); NameB++)
WriteLine(array[NameB, 0]);
}
else
{
Write("\nIncorrect code");
}
Write("\nEnter a Code or 999 to stop >> ");
CodeInput = ReadLine();
}
}
while (CodeInput != STOP);
}
匹配结果列出了所有名称,而不仅仅是匹配。我明白为什么它不起作用——第一个数组循环找到一个匹配项,然后第二个数组循环只是吐出所有名字——但我不知道如何让它工作。是的,这是家庭作业,我希望能够使用字典而不是数组,但不幸的是这不是一个选项。
第二个 for 循环吐出所有的名字,因为这正是你要他做的。
for (int NameB = 0; NameB < array.GetLength(0); NameB++)
WriteLine(array[NameB, 0]);
相当于显示所有名字
您想做的是:
do
{
// Flag to indicate that you've found at least one match.
bool isFound = false;
for (int Name = 0, Code = 1; Name < array.GetLength(0); Name++)
{
if (CodeInput == array[Name, Code])
{
Console.WriteLine(array[Name, 0]);
isFound = true;
}
}
// If no matches found - display message
if (!isFound)
{
Console.Write("\nIncorrect code");
}
// Moved out of cycle, so it won't be asked every iteration.
Console.Write("\nEnter a Code or 999 to stop >> ");
CodeInput = Console.ReadLine();
}
while (CodeInput != STOP);