Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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# 使用通过';找到的值;。包含';_C#_Arrays - Fatal编程技术网

C# 使用通过';找到的值;。包含';

C# 使用通过';找到的值;。包含';,c#,arrays,C#,Arrays,这是一个控制台单位转换程序,它接收用户指定的测量单位(如磅、盎司),然后是第二个测量单位,最后是从一个单位转换到另一个单位的值 string userUnit1, userUnit2 = ""; int userValue = 0; 可以使用的单位在文本文件中指定,文本文件的内容在程序中拆分为字符串数组(称为“单位”)。文本文件还包含两个单位之间的“转换值”。在文本文件中,它们是这样显示的:盎司,克,28.0(因为一盎司中有28克,所以这个值也被放入数组中) 使用以下代码片段检查用户输入的单位

这是一个控制台单位转换程序,它接收用户指定的测量单位(如磅、盎司),然后是第二个测量单位,最后是从一个单位转换到另一个单位的值

string userUnit1, userUnit2 = "";
int userValue = 0;
可以使用的单位在文本文件中指定,文本文件的内容在程序中拆分为字符串数组(称为“单位”)。文本文件还包含两个单位之间的“转换值”。在文本文件中,它们是这样显示的:盎司,克,28.0(因为一盎司中有28克,所以这个值也被放入数组中)

使用以下代码片段检查用户输入的单位:

double result = 0;

if (units.Contains(userUnit1) && units.Contains(userUnit2))
{
    //??? Something like:
    //result = userValue */ value in the array element;
}
上面的基本IF语句检查数组中用户输入的单位,我要做的是使用该数组元素中的转换值来转换用户输入的数字。我该怎么办

编辑:这是用于将拆分文本存储到数组中的代码

using (read = new StreamReader("C:/Users/Sam Smith/Desktop/convert.txt"))
            {
                while (!read.EndOfStream)
                {
                    lineFromFile = read.ReadLine();
                    lineFromFile.Split(' ');

                    foreach (int i in lineFromFile)
                    {
                        count++;
                        if (count % 3 == 0)
                        {
                            units.Add(lineFromFile);
                        }
                    }
                }
            }

在unit1Index和unit2Index中使用IndexOf方法并与-1进行比较以确保找到它们,或者使用FirstOrDefault扩展方法并与null进行比较

听起来你应该用它来编一个单词,这样可以用TryGetValue来简化这个过程

var conversionsDic = File.ReadAllLines("conversions.txt")
                         .Select(l => l.Split(' '))
                         .ToDictionary(ls => ls[0] + ls[1], ls => double.Parse(ls[2]));

double conversion;
if (conversionsDic.TryGetValue(userUnit1 + userUnit2, out conversion))
{
    // use 'conversion' to do whatever
    var result = userValue * conversion;
}

在unit1Index和unit2Index中使用IndexOf方法并与-1进行比较以确保找到它们,或者使用FirstOrDefault扩展方法并与null进行比较

听起来你应该用它来编一个单词,这样可以用TryGetValue来简化这个过程

var conversionsDic = File.ReadAllLines("conversions.txt")
                         .Select(l => l.Split(' '))
                         .ToDictionary(ls => ls[0] + ls[1], ls => double.Parse(ls[2]));

double conversion;
if (conversionsDic.TryGetValue(userUnit1 + userUnit2, out conversion))
{
    // use 'conversion' to do whatever
    var result = userValue * conversion;
}
像这样的

String path = @"C:\Users\Sam Smith\Desktop\convert.txt";
var lines = System.IO.File.ReadLines(path)
           .Where(l => l.Contains(userUnit1) && l.Contains(userUnit2));
if(lines.Any())
{
    var unit = lines.First();
    var parts = unit.Split(new char[]{','}, StringSplitOptions.RemoveEmptyEntries);
    var result = userValue * double.Parse(parts[2]);
}
您需要对的
System.Linq
命名空间的引用。您可以使用来检索文件中的所有行,如
IEnumerable

类似的内容

String path = @"C:\Users\Sam Smith\Desktop\convert.txt";
var lines = System.IO.File.ReadLines(path)
           .Where(l => l.Contains(userUnit1) && l.Contains(userUnit2));
if(lines.Any())
{
    var unit = lines.First();
    var parts = unit.Split(new char[]{','}, StringSplitOptions.RemoveEmptyEntries);
    var result = userValue * double.Parse(parts[2]);
}

您需要对的
System.Linq
命名空间的引用。您可以使用来检索文件中的所有行,因为
IEnumerable

您使用的拆分方法不正确。将返回值保存到字符串数组中并迭代该数组。整个函数没有多大意义…您使用的拆分方法不正确。将返回值保存到字符串数组中并迭代该数组。而且整个函数没有多大意义……如果无法使用,是否有特定的系统名称空间?是的,
system.Linq
()。我觉得您必须将该值相乘(进行相应编辑)。@BoggyB添加对System.Linq的引用,并查看我的答案:)。如果无法使用,是否有特定的系统名称空间?是的,
System.Linq
()。我觉得您必须将该值相乘(相应地进行编辑)。@BoggyB添加对System.Linq的引用,并查看我的答案:)