Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ReadLine输入控制要在数组中使用的项并获取它们的项号?_C#_Arrays - Fatal编程技术网

C# 使用ReadLine输入控制要在数组中使用的项并获取它们的项号?

C# 使用ReadLine输入控制要在数组中使用的项并获取它们的项号?,c#,arrays,C#,Arrays,假设我在我的程序中已经创建了两个数组(数组“a”和数组“b”),它们都有相同数量的项。它们有不同的值,但它们按数字顺序相互补充。我想做的是,当我在数组“a”中输入一个项目的名称时,它应该给我该项目的编号,然后使用该编号调用数组b中项目的名称。请检查以下代码,了解我心目中的示例: 假设数组“file”中有“abc”、“cde”、“fgh”项,数组“directory”中有“123”、“456”、“789”项 因为“abc”是数组“file”中的第一项,所以我需要一些命令将其更改为项目编号,在本例中

假设我在我的程序中已经创建了两个数组(数组“a”和数组“b”),它们都有相同数量的项。它们有不同的值,但它们按数字顺序相互补充。我想做的是,当我在数组“a”中输入一个项目的名称时,它应该给我该项目的编号,然后使用该编号调用数组b中项目的名称。请检查以下代码,了解我心目中的示例:

假设数组“file”中有“abc”、“cde”、“fgh”项,数组“directory”中有“123”、“456”、“789”项

因为“abc”是数组“file”中的第一项,所以我需要一些命令将其更改为项目编号,在本例中为[0]

{
    int given number = file[number of the item we entered]
    Process.Start(directory[given number]+file[the same number that has been converted]);
}
编辑:很抱歉,我问问题时犯了一个小错误(我的意思是我问对了问题,但忘记了问题的一部分)我键入的部分“if(typed==file[(数组“file”中的一个项的名称,例如“abc”))“我不知道如何通过用户输入的输入读取数组,你能帮我吗?

数组.IndexOf()方法返回数组中特定项出现的索引。如果该项根本不出现在数组中,则返回-1。您可以使用此方法来满足您的需求,例如:

string typed = Console.ReadLine();
string[] file = {"abc", "cde", "fgh"};
int result = Array.IndexOf(file, typed);

//result of IndexOf will be 0 or higher if it found a matching string in the array
if (result >= 0)
{
   Console.WriteLine("Your input value " + typed + " exists in the array at index " + result.toString());
}
else
{
   Console.WriteLine("Your input did not match anything");
}
var index = file.IndexOf(directories, "abc");


注意:只有当数组中的所有值都是唯一的时,这项功能才能正常工作。

存储在字典中不是更好吗

var directories = new Dictionary<string, string>();

。。。然后在directories数组中获取相应的项-directories[index]

那么您想要
.IndexOf(…)
?数组中的所有项都是唯一的吗?我建议您使用字典。对于每个文件项,存储其值,在readline上,您只需根据此键返回值。很抱歉打扰您,但我在问题中添加了几行内容,请您再次帮助我。@agoodfeller
Array.IndexOf(file,typed)
,也许?我的示例使用了一个硬编码的值进行搜索,您只需将其替换为输入变量即可。如果我搞错了,请告诉我,但我所做的和它不起作用:
string nameofprogram=Array.IndexOf(file,typed).ToString()
if(typed==nameofprogram)
{
Console.WriteLine(“它工作!”);
}
否,因为Array.IndexOf返回一个数字,即0,正如我上面提到的,而
typed
将是一个类似“abc”的字符串,所以你不能用
if
语句来比较这两件事。如果使用VisualStudio调试器,则可以使用断点在该行上停止,并查看将要比较的值。您询问了如何获取用户输入内容(如果有)的数字索引,这是Array.IndexOf提供的内容。然后尝试将其与文本进行比较是没有逻辑意义的。因为Array.IndexOf返回的是什么,您已经知道文本是否与数组中的任何内容匹配。很抱歉,我只是让这变得越来越混乱,是的,我想要得到数字的部分是正确的,但是在“如果”中我想得到的部分是数组中的项目名称,就像我在以粗体字开头的部分中所说的,因为我也不知道怎么做。但是当我问这个问题时,我没有清楚地表明我想要它,这完全是我的错。这就像程序从用户那里获取字符串输入,然后检查字符串输入是否在该数组中,然后将该输入转换为一个数字(如果存在),至少这是我想要实现的。对不起,打扰了,但我在问题中添加了几行,你能再次帮助我吗。
var index = file.IndexOf(directories, "abc");