我正在尝试从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;
}
答案 0 :(得分:1)
使用decimal.Parse
:
var x = "1";
var y = "1.1";
Console.WriteLine(decimal.Parse(x));
Console.WriteLine(decimal.Parse(y));
这是一个显示如何执行此操作的dotnetfiddle:https://dotnetfiddle.net/mUB8iz
答案 1 :(得分:0)
C#是类型安全的编程语言,
您可以使用ArrayList类不是类型安全的,因为它可以存储任何对象,这意味着您可以执行以下操作:
var integers = new ArrayList();
while (ifile.EndOfStream == false)
{
str = ifile.ReadLine();
integers.Add(decimal.Parse(str));
}
并按照以下步骤进行操作。