我正在尝试从txt文件读入数组。我把所有内容写成整数读取,但是我误读了信息并且还需要能够计算小数。如何更改下面的代码以允许小数?
我是C#的新手,但我无法弄清楚这一点。如果我只是将int切换为double,我会收到错误“无法将int类型隐式转换为double”。
StreamReader ifile;
ifile = File.OpenText("sales.txt");
int count = 0;
string str = "";
//Populating the array
while (ifile.EndOfStream == false)
{
str = ifile.ReadLine();
list[count] = decimal.Parse(str);
count++;
}
// Display the contents of the array
foreach (decimal val in list)
{
listBoxSales.Items.Add(val);
}
int Average;
Average = average(list);
labelAvgsales.Text = Average.ToString();
我只需要将数字拉入数组列表。上面的代码用于提取整数,但是当列表中的整数表示“输入字符串格式不正确”时,显然会失败。
更新:小数不再使用上面的代码错误输出。第二部分我希望自己弄清楚是从数组调用信息。
以下工作,但在切换到允许小数后,它会出错。我尝试在下面将int切换为十进制,但我不确定我做错了什么。
private int average(int[] numList)
{
int avg;
int total = 0;
for (int i = 0; i < numList.Length; i++)
{
total += numList[i];
}
avg = total / numList.Length;
return avg;
}
使用decimal.Parse
:
var x = "1";
var y = "1.1";
Console.WriteLine(decimal.Parse(x));
Console.WriteLine(decimal.Parse(y));
这是一个dotnetfiddle显示如何做到这一点:https://dotnetfiddle.net/mUB8iz
C#是类型安全的编程语言,
您可以使用ArrayList类不是类型安全的,因为它可以存储任何对象,这意味着您可以执行以下操作:
var integers = new ArrayList();
while (ifile.EndOfStream == false)
{
str = ifile.ReadLine();
integers.Add(decimal.Parse(str));
}
并按如下方式进行。