我正在创建一个程序,它接受.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是设计视图中的名称,表明它不是一个挂钩问题。我在这里做错了什么?
答案 0 :(得分:0)
我测试了你的代码,运行正常 - 一旦我的文件路径正确。我相信您的问题是 TestScores.txt 文件不在您的代码运行的同一文件夹中。
如果您这样做是为了获得学习体验,我建议您指定文件的完整路径。否则,您可能希望使用 OpenFileDialog 对象,以便可以在运行时指定该文件。微软的开发者网络有一篇很好的文章here。
另外,如果要将其用于生产,请考虑使用 int.TryParse()方法而不是 int.Parse(),以便您可以处理经常在文本文件中找到错误的数据。