我不能让我的程序工作。我认为它可能是一个命名问题,但我不确定。我该怎么办?

时间:2015-11-10 22:52:54

标签: c#

我正在创建一个程序,它接受.txt文件,读取它,然后显示平均分数,高于平均分数,低于平均分数。没有语法错误,但似乎没有任何东西可以使它工作。单击该按钮不会执行任何操作。

这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

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

        private void ReadScores(List<int> scoreList)
        {
            try
            {
                StreamReader inputFile = File.OpenText("TestScores.txt");

                while (!inputFile.EndOfStream)
                {
                    scoreList.Add(int.Parse(inputFile.ReadLine()));
                }

                inputFile.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void DisplayScores(List<int> scoreList)
        {
            foreach (int score in scoreList)
            {
                this.scoreList.Items.Add(score);
            }
        }

        private double average(List<int> scoreList)
        {
            int total = 0;
            double average;

            foreach (int score in scoreList)
            {
                total += score;
            }

            average = (double)total / scoreList.Count;

            return average;
        }

        private int AboveAverage(List<int> scoreList)
        {
            int numAbove = 0;

            double avg = average(scoreList);

            foreach (int score in scoreList)
            {
                if (score > avg)
                {
                    numAbove++;
                }
            }

            return numAbove;
        }

        private int BelowAverage(List<int> scoreList)
        {
            int numBelow = 0;

            double avg = average(scoreList);

            foreach (int score in scoreList)
            {
                if (score < avg)
                {
                    numBelow++;
                }
            }

            return numBelow;
        }

        private void getScoresButton_Click(object sender, EventArgs e)
        {
            double averageScore;
            int numAboveAverage;
            int numBelowAverage;

            List<int> scoreList = new List<int>();

            ReadScores(scoreList);

            DisplayScores(scoreList);

            averageScore = average(scoreList);
            averageLabel.Text = averageScore.ToString("n1");

            numAboveAverage = AboveAverage(scoreList);
            this.numAboveAverage.Text = numAboveAverage.ToString();

            numBelowAverage = BelowAverage(scoreList);
            this.numBelowAverage.Text = numBelowAverage.ToString();
        }

        private void exitButton_Click(object sender, EventArgs e)
        {
            this.Close();
        }

    }
}

同样here是设计视图中的名称,表明它不是一个挂钩问题。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我测试了你的代码,运行正常 - 一旦我的文件路径正确。我相信您的问题是 TestScores.txt 文件不在您的代码运行的同一文件夹中。

如果您这样做是为了获得学习体验,我建议您指定文件的完整路径。否则,您可能希望使用 OpenFileDialog 对象,以便可以在运行时指定该文件。微软的开发者网络有一篇很好的文章here

另外,如果要将其用于生产,请考虑使用 int.TryParse()方法而不是 int.Parse(),以便您可以处理经常在文本文件中找到错误的数据。