我正在尝试用C#编写一个控制台应用程序,允许用户以x,pound,盎司的格式输入以下信息,其中X是要转换的值。
我创建了一个文本文件,其中包含以下格式的转换因子。
磅,盎司,16.0
我希望应用程序做的是获取用户输入,然后在文本文件中找到正确的转换因子,然后计算结果。
我尝试使用Node类循环转换因子列表,但它似乎不起作用=(
你能帮忙吗?
答案 0 :(得分:1)
使用流阅读器可以轻松地逐行读取文件。然后,您可以通过拆分字符串来获取三位。这看起来像这样:
string line;
StreamReader reader = new StreamReader(filePath);
while(null != (line = reader.Read())
{
//You have to create the constant COMMA_SEP
string split = line.Split(COMMA_SEP);
}
进行正确的计算是您必须创建的。知道列表中的开始和结束,您可以创建一个状态机类型的类,返回正确的类来调用,例如。然后创建一个工厂类以返回包含所需算法的类。
public class CalculatorFactory
{
public ICalculator GetCalculator(string origin, string result)
{
//Implementation to get correct calculator
}
}
然后你可以在这个界面上调用Calculate方法并得到答案。
有意义吗?
答案 1 :(得分:0)
转换因子的平面文件不够实用。您需要的是将这些因素存储在XML中:
<?xml version="1.0" encoding="utf-8" ?>
<ConversionFactors>
<ConversionFactor>
<From>Pounds</From>
<To>Ounce</From>
<Factor>16</Factor>
</ConversionFactor>
<ConversionFactor>
<From>Fortnight</From>
<To>Day</From>
<Factor>14</Factor>
</ConversionFactor>
<ConversionFactor>
<From>KesselRun</From>
<To>Parsec</From>
<Factor>12</Factor>
</ConversionFactor>
</ConversionFactors>
这样您就可以创建XmlDocument
对象并使用XPath表达式选择转换因子。
答案 2 :(得分:0)
有很多方法可以解决这个问题。这是一种用很少的代码解决问题的简单方法:
创建一个字典来保存转化; 对于文件中的每个转换因子行,您可以执行此操作 conversionFactors.Add(from-to,value),其中from-to是这两个单元的串联 - 它只是一个查找键,因此格式化它并不重要。假设用户将输入相同的文本字符串。
然后获取用户的输入,构造from-to“key”,通过执行字典[from_to]从Dictionary中获取转换因子“value”并进行乘法。
当然不优雅,但它可能是十几行代码。听起来像家庭作业,所以我会留下我的解决方案。
答案 3 :(得分:0)
我设法使用数组来解决它:)