为什么文本文件的信息没有读入我的数组,然后读入列表框

本文关键字:数组 然后 列表 我的 文本 信息 为什么 文件 | 更新日期: 2023-09-27 17:56:46

我对C#比较陌生,遇到了一个问题。我的程序每次尝试捕获时都会不断抛出错误。我已经检查了所有内容并改变了一些东西,但似乎没有任何效果。可能是文本文件的读取吗?还是阵列?还是转移到列表框中?我真的需要一些帮助。它已经变得只不过是一个令人头疼的问题。 ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 using 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 variable to act as the accumulator
            const int SIZE = 100;
            double[] allSales = new double[SIZE];
            double total = 0.0;
            double average;
            double highest = allSales[0];
            double lowest = allSales[2000];
            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)
            {
                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)
        {
            // Display an error message on bad input from file 
            MessageBox.Show("Error calculating the sales.");
        }
    }
    private void btnExit_Click(object sender, EventArgs e)
    {
        //Closes the application
        this.Close();
    }
}

}

为什么文本文件的信息没有读入我的数组,然后读入列表框

我没有

阅读您的所有代码,但是开始时有一个错误:

const int SIZE = 100;
double[] allSales = new double[SIZE];
<snip>
double lowest = allSales[2000];

您已将数组声明为具有 100 个元素,但您正在尝试访问第 2,000 个元素。 你的数组不是那么大,所以你会在该行得到一个 IndexOutOfRangeException。

数组在声明后在 C# 中具有固定大小。 如果需要更改大小,请使用泛型 List 类。

在martin_costello的答案上,也许你可以像这样初始化最低和最高:

double highest = double.MinValue;
double lowest = double.MaxValue;

或者至少,在加载数据后初始化这些值!

另外,还有一个调试提示:如果收到错误,请显示 catch 返回的错误或注释掉 try/catch,以便可以看到错误。

前者的例子:

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));
}