基本上,我尝试创建的表单允许用户从列表中选择学生姓名,输入项目成绩并单击go。该程序将检查点击的学生,然后将项目成绩乘以同行评估分数。这就是我的问题......
peer eval得分来自peerFile.txt文件。我需要从5×5文件中取出标记并将其放入2d数组中,以便找到学生同行评估分数(数组中各列的平均值)
这是我的代码,应该是使用txt文件中的值加载数组,但它是一个很大的失败。有人可以帮忙吗?
int row = 0;
int column = 0;
double[,] evaluation = new double[row, column];
StreamReader inputFile;
inputFile = File.OpenText("peerFile.txt");
while (row < evaluation.Length && !inputFile.EndOfStream)
{
evaluation[row, column] = int.Parse(inputFile.ReadLine());
row++;
column++;
}
inputFile.Close();
一些额外的细节
我的对等文件设置如下:
0.1,0.9,0.9,1.0,0.4
0.1,0.9,0.9,1.0,0.4
0.1,0.9,0.9,1.0,0.4
0.1,0.9,0.9,1.0,0.4
0.1,0.9,0.9,1.0,0.4
答案 0 :(得分:1)
因此,如果您的文本文件与您说的一样,那么这不会起作用:
evaluation[row, column] = int.Parse(inputFile.ReadLine());
因为文件中的单行如下所示:
0.1,0.9,0.9,1.0,0.4
您无法解析这样的逗号分隔列表。你首先需要拆分它。像(编辑 - 它们不是整数):
var line = inputFile.ReadLine();
var values = line.Split(",");
然后你可以遍历那个数组并int.Parse
:
for (int c = 0; c < values.length; c++)
{
evaluation[row,c] = double.Parse(values[c]);
}
答案 1 :(得分:1)
主要问题可能是:
evaluation[row, column] = int.Parse(inputFile.ReadLine());
您在那里阅读了整行文件,然后尝试将其解析为单个int
。
执行解析和I / O最方便的方法可能是拆分它然后解析它:
int row = 5;
int column = 5;
double[,] evaluation = new double[row, column];
StreamReader inputFile = File.OpenText("peerFile.txt");
int rowi = 0;
while (!inputFile.EndOfStream) {
int coli = 0;
foreach(double x in inputFile.ReadLine().Split(new char[] {','}).Select(x => double.Parse(x))) {
evaluation[rowi,coli] = x;
coli++;
}
rowi++;
}
inputFile.Close();
<强>修饰强>:
double.Parse
; StreamReader.ReadLine()
,则会使用String.Split
分割不同的列来读出整行。Enumerable<T>.Select
是 LINQ 函数,用于在拆分后迭代所有元素。