所以我在大学一年级时,Visual Studio中的C#是六个模块之一。
基本上我的问题是,我需要读取.txt文件中的值并从该值计算佣金。
.txt文件包含:
1,Pat Ryan,280
2,Mary Smith,300
3,Tom Lynch,20
每一行的第三个值是我需要计算的佣金,但我无法理解这个值,因为你不能用我们目前使用的代码选择一个值,你需要通过每一行才能到达下一行。
This is到目前为止我所做的一切。我试着用这种方式进行计算:
if (columns [0] < 1000) {commission = column[0] * .05}
但是得到一个错误:
&#34;运营商&#39;&lt;&#39;不能应用于&#39; string []&#39;类型的操作数和&#39; int&#39;&#34;
非常感谢任何帮助!
static void salesReport()
{
string path = "sales.txt";
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
StreamReader salesReport = new StreamReader(fs);
string inputText = salesReport.ReadLine();
Console.WriteLine("{0,-15}{1,-30}{2,-20}\n", "Number","Name","Sales");
while (inputText != null)
{
string[] columns = new string [3];
columns = inputText.Split(',');
Console.WriteLine("{0,-15}{1,-30}{2,-10}\n", columns[0], columns[1], columns[2]);
inputText = salesReport.ReadLine();
}
}
答案 0 :(得分:5)
您无法在错误中指定的字符串和int之间执行比较操作。您需要将从文本文件中获得的值转换为int,然后进行比较。
if (Convert.ToInt32(columns[2]) < 1000)
{
commission = Convert.ToInt32(columns[2]) / .05;
}
看起来你想要第3列,我已将索引更改为2。
答案 1 :(得分:2)
这是一个尝试解析文件并执行所需操作的快速示例。这有很多不好的做法,例如我连接输出字符串的方式,但你应该明白这一点。
static void Main(string[] args)
{
using (StreamReader reader = new StreamReader(@"C:\Path\To\File.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
string[] stuff = line.Split(',');
int id = Convert.ToInt32(stuff[0]);
string name = stuff[1];
int val = Convert.ToInt32(stuff[2]);
double commission = (double)val * 0.05;
Console.WriteLine(name + "'s Commission: " + commission.ToString());
}
}
}
答案 2 :(得分:0)
试试这个
if (int.Parse(columns[0]) < 1000) {commission = int.Parse(columns[0]) * .05}
答案 3 :(得分:0)
您的问题是您没有评估整数。您正在尝试在split
操作后将比较运算符应用于字符串表示。
我添加了一个方法safeToInt
,如果字符串不是int,它将阻止讨厌的异常。当然,如果你想知道这些错误,你应该直接使用Int32.TryParse
并评估布尔结果。
我没有更改您的代码以使用我为您添加的方法:-)您应该能够解决这个问题。
static void salesReport() {
string path = "sales.txt";
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
StreamReader salesReport = new StreamReader(fs);
string inputText = salesReport.ReadLine();
Console.WriteLine("{0,-15}{1,-30}{2,-20}\n", "Number","Name","Sales");
while (inputText != null) {
string[] columns = new string [3];
columns = inputText.Split(',');
Console.WriteLine("{0,-15}{1,-30}{2,-10}\n", columns[0], columns[1], columns[2]);
inputText = salesReport.ReadLine();
}
}
static int safeToInt(string input, int defaultValue = 0){
int result = 0;
if(Int32.TryParse(input, out result)){
return result;
}
return defaultValue;
}