【发布时间】:2018-10-15 02:53:16
【问题描述】:
属性正在更新,但是当再次调用学生的方法时,它会计算但返回 0。但是,学生考试的总项和总正确项已更新并具有值。
这是学生课的代码
public class Student : Person, IStudentGrade, IGrade
{
public List<Exam> ExamList { get; set; }
public Recitations Recitations { get; set; }
public double ComputeMidtermGrade()
{
var midterm = ExamList.Where(e => e.Term.Equals(Terms.Midterm)).SingleOrDefault();
var midtermGrade = ((((midterm.TotalCorrectItem / midterm.TotalItem) * 50) / 50) * 0.25) * 100;
return midtermGrade;
}
public double ComputeFinalsGrade()
{
var finalsterm = ExamList.Where(e => e.Term.Equals(Terms.Finals)).SingleOrDefault();
var finalsGrade = ((((finalsterm.TotalCorrectItem / finalsterm.TotalItem) * 50) / 50) * 0.25) * 100;
return finalsGrade;
}
public double ComputePrelimsGrade()
{
var prelims = ExamList.Where(e => e.Term.Equals(Terms.Prelims)).SingleOrDefault();
var prelimGrade = ((((prelims.TotalCorrectItem / prelims.TotalItem) * 50) / 50) * 0.25) * 100;
return prelimGrade;
}
public double RecitaionGrade()
{
var sum = Recitations.RecitationsList.Sum(r => r.Grade);
var recitationGrade = (sum / Recitations.RecitationsList.Count) * 0.25;
return recitationGrade;
}
public double ComputeTotalGrade()
{
var totalgrade = ((ComputePrelimsGrade() + ComputeMidtermGrade() + ComputeFinalsGrade() + RecitaionGrade()));
return totalgrade;
}
}
但更新属性后返回值为 0,但属性有值。
图1中100%及格,图2中新的TOTAL GRADE是在学生课堂上用这种方法计算出来的。
public double ComputeTotalGrade()
{
var totalgrade = ((ComputePrelimsGrade() + ComputeMidtermGrade() + ComputeFinalsGrade() + RecitaionGrade()));
return totalgrade;
}
所以任何人都可以帮助我为什么它在 ComputeMidtermGrade()、ComputeFinalsGrade()、ComputePrelimsGrade() 中返回 0
更新学生成绩后查看,可以看到预科、期中和期末成绩均为0。但预科成绩karl的分数为5/10(考试班的属性)
public enum Terms { Prelims, Midterm, Finals };
public class Exam
{
public Terms Term {get; set;}
public int TotalItem { get; set; }
public int TotalCorrectItem { get; set; }
}
编辑: 第1图第1视图,第2图编辑等级,第3图编辑后第2视图
【问题讨论】:
-
调试你的代码。更新后查找
Exam.TotalCorrectItem为什么为0。另外((x) * 50) / 50)始终是(x) -
它有值 Exam.TotalCorrectItem 和 Exam.TotalCorrectItem 你可以在最后一张图像中看到它的初步分数:karl 5/10,5 是考试总正确项目,10 是图腾。但它在 prelim 中返回 0。我刚刚调用了我在第一张图片中使用的相同方法,它计算了初步成绩。
标签: c# linq oop properties