我的文本文件不会读入数组

时间:2014-04-06 19:12:23

标签: c#

这已经得到了回答。我对C#比较新,我遇到了问题。我的程序不断尝试捕获错误。我已经查看了所有内容并改变了一切,但似乎没有任何效果。错误被抛出到第49行(其中发生用于读取文本文件的while循环)。有谁知道这可能是什么问题?我知道min / max / average可能还有其他一些问题,但我可以解决这个问题。我真的需要有人帮我修复文件读入数组。

错误代码为:输入字符串的格式不正确。在System.Number.StringToNumber     使用System.Collections.Generic;     使用System.ComponentModel;     使用System.Data;     使用System.Drawing;     使用System.Linq;     使用System.Text;     使用System.Windows.Forms;     使用System.IO;

namespace Total_Sales_BBrantley
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void btnCalc_Click(object sender, EventArgs e)
    {
        try
        {
            // Declare variable to hold the amount of sales

            // Declare a constant for the array size
            const int SIZE = 100;
            // Create an array for the sales
            double[] allSales = new double[SIZE];
            // Declare a variable for holding the total value of sales
            double total = 0.0;
            // Declare a variable to hold the average
            double average;
            // Declare a variable to hold the highest value
            double highest = double.MinValue;
            // Declare a variable to hold the lowest value
            double lowest = double.MaxValue;

            int count = 0;

            // Declare a StreamReader variable.
            StreamReader readFile;

            // Open the file and get a StreamReader object using a relative path
            readFile = File.OpenText("Sales.txt");

            while (!readFile.EndOfStream && count < allSales.Length)
            {
             ERROR ERROR ERROR: [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[   allSales[count] = int.Parse(readFile.ReadLine()); ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
                // Increment count
                count++;


        } 

            // Close the file
            readFile.Close();

            lstSales.Items.Add("The file contains " + count + " items:");
            for (int index = 0; index < count; index++)
            {
                lstSales.Items.Add(allSales[index]);

            }



            // Display the total
            double sum = allSales.Sum();
            lblTotal.Text = sum.ToString();

            total += sum;
            average = total / allSales.Length;
            lblAverage.Text = average.ToString();

            for (int index = 1; index < allSales.Length; index++)
            {
                if (allSales[index] > highest)
                {
                    highest = allSales[index];
                }
                lblHighest.Text = highest.ToString();

            }
            for (int index = 1; index < allSales.Length; index++)
            {
                if (allSales[index] < lowest)
                {
                    lowest = allSales[index];
                }
                lblLowest.Text = lowest.ToString();
            }
        }
        catch (Exception ex)
        {
            // Display an error message on bad input from file 
            MessageBox.Show(string.Concat("Error calculating the sales. ", ex.Message,     "\r\n", ex.StackTrace));
        }

    }

    private void btnExit_Click(object sender, EventArgs e)
    {
        //Closes the application
        this.Close();
    }
}

}

2 个答案:

答案 0 :(得分:2)

我认为问题在于您使用的是int.Parse而不是double.Parse。

答案 1 :(得分:0)

这是你的问题:

allSales[count] = int.Parse(readFile.ReadLine());

您的数组是一个Double数组,并且您将字段分配给整数值。将该行解析为Double而不是int。

allSales[count] = Double.Parse(readFile.ReadLine());