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的引用,并查看我的答案:)