Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 成绩统计计算器_Javascript_Html_Css_Calculator - Fatal编程技术网

Javascript 成绩统计计算器

Javascript 成绩统计计算器,javascript,html,css,calculator,Javascript,Html,Css,Calculator,我想获得一些关于我的javascript代码的帮助。我制作了一个成绩统计计算器,可以显示以下方面的结果: 最低–最高学生成绩 最小值–最大学生平均值 最低–最高课程成绩 最低–最高课程平均成绩 您可以在此处访问它-->并按“显示结果”按钮查看我的输出。(您可以更改名称和等级以获得不同的输出) 我的问题是,我无法理解为什么它不能在最小-最大课程成绩上显示正确的课程名称,尽管它显示的成绩是正确的。我也不明白为什么它错误地计算了最低和最高课程平均成绩,并错误地显示了相应的课程名称 任何帮助都将不胜感激

我想获得一些关于我的javascript代码的帮助。我制作了一个成绩统计计算器,可以显示以下方面的结果: 最低–最高学生成绩 最小值–最大学生平均值 最低–最高课程成绩 最低–最高课程平均成绩

您可以在此处访问它-->并按“显示结果”按钮查看我的输出。(您可以更改名称和等级以获得不同的输出)

我的问题是,我无法理解为什么它不能在最小-最大课程成绩上显示正确的课程名称,尽管它显示的成绩是正确的。我也不明白为什么它错误地计算了最低和最高课程平均成绩,并错误地显示了相应的课程名称

任何帮助都将不胜感激:)

.js代码:

var Course0 = Array(6);
var Course1 = Array(6);
var Course2 = Array(6);
var Student = Array(6);

var CMap = [Course0, Course1, Course2];
var NMap = ["Course0", "Course1", "Course2"];

var showResults = function () {

    var Rows = document.getElementsByClassName("srow");

    for (var i = 1; i < Rows.length - 1; i++) {

        var values = Rows[i].getElementsByTagName("input");
        Student[i - 1] = values[0].value;

        for (var j = 1; j < values.length; j++) {
            CMap[j - 1][i - 1] = values[j].value;
        }
    }

    var MinID = MaxID = AvgMinID = AvgMaxID = 0;
    var Min = Max = AvgMin = AvgMax = undefined;

    for (var i = 0; i < Student.length; i++) {

        var c0 = Course0[i];
        var c1 = Course1[i];
        var c2 = Course2[i];

        var lessonMin = Math.min(c0, c1, c2);
        var lessonMax = Math.max(c0, c1, c2);

        if ((lessonMin <= Min) || (typeof Min === "undefined")) {
            MinID = i;
            Min = lessonMin;
        }

        if ((lessonMax >= Max) || (typeof Max === "undefined")) {
            MaxID = i;
            Max = lessonMax;
        }


        var Avg = Math.avg(c0, c1, c2);

        if ((Avg < AvgMin) || (typeof AvgMin === "undefined")) {
            AvgMinID = i;
            AvgMin = Avg;
        }

        if ((Avg > AvgMax) || (typeof AvgMax === "undefined")) {
            AvgMaxID = i;
            AvgMax = Avg;
        }

    }

    var Wrapper = document.getElementById("student-results");
    Wrapper.innerHTML = "";


    Wrapper.innerHTML += "<span>The Student with lower grade is: " + Student[MinID] + ", Equals To " + Min + "</span>";
    Wrapper.innerHTML += "<span>The Student with higher grade is: " + Student[MaxID] + ", Equals To " + Max + "</span>";

    Wrapper.innerHTML += "<hr />";


    Wrapper.innerHTML += "<span>The Student with lower average grade is: " + Student[AvgMinID] + ", Equals To " + AvgMin + "</span>";
    Wrapper.innerHTML += "<span>The Student with higher average grade is: " + Student[AvgMaxID] + ", Equals To " + AvgMax + "</span>";

    var CourseMin = CourseMinID = CourseMax = CourseMaxID = CourseAvgMin = CourseAvgMinID = CourseAvgMax = CourseAvgMaxID = 0;

    CourseMin = CourseMax = CourseAvgMin = CourseAvgMax = undefined;

    for (var i = 0, j = 0; i < Student.length; i++, j += .5) {

        var c0 = Course0;
        var c1 = Course1;
        var c2 = Course2;

        var CheckMin = Math.min(c0[i], c1[i], c2[i]);

        if (CourseMin > CheckMin || (typeof CourseMin === "undefined")) {
            CourseMin = CheckMin;
            CourseMinID = i;
        }

        var CheckMax = Math.max(c0[i], c1[i], c2[i]);

        if (CourseMax < CheckMax || (typeof CourseMax === "undefined")) {
            CourseMax = CheckMax;
            CourseMaxID = parseInt(j);
        }

        var Avg = Math.avg(c0[i], c1[i], c2[i]);

        if (Avg < CourseAvgMin || (typeof CourseAvgMin === "undefined")) {
            CourseAvgMin = Avg;
            CourseAvgMinID = j;
        }

        if (Avg > CourseAvgMax || (typeof CourseAvgMax === "undefined")) {
            CourseAvgMax = Avg;
            CourseAvgMaxID = parseInt(j);
        }

    }

    console.log(CourseMaxID);

    Wrapper.innerHTML += "<hr />";

    Wrapper.innerHTML += "<span>The Course with lower grade have: " + NMap[CourseMinID] + ", Equals To " + CourseMin + "</span>";
    Wrapper.innerHTML += "<span>The Course with higher grade have: " + NMap[CourseMaxID] + ", Equals To " + CourseMax + "</span>";

    Wrapper.innerHTML += "<hr />";


    Wrapper.innerHTML += "<span>The Course with lower average grade have: " + NMap[CourseAvgMinID] + ", Equals To " + CourseAvgMin + "</span>";
    Wrapper.innerHTML += "<span>The Course with higher average grade have: " + NMap[CourseAvgMaxID] + ", Equals To " + CourseAvgMax + "</span>";


    return null;

};

Math.avg = function () {

    var Avg = 0;
    var table = arguments;
    for (var i = 0; i < table.length; i++) {
        Avg += parseFloat(table[i]);
    }
    return parseFloat(Avg / table.length);

};
var-Course0=数组(6);
var Course1=数组(6);
var-Course2=数组(6);
var Student=Array(6);
var CMap=[Course0,Course1,Course2];
变量NMap=[“Course0”、“Course1”、“Course2”];
var showResults=函数(){
var Rows=document.getElementsByClassName(“srow”);
对于(变量i=1;iAvgMax)| |(AvgMax的类型==“未定义”)){
AvgMaxID=i;
AvgMax=Avg;
}
}
var Wrapper=document.getElementById(“学生结果”);
Wrapper.innerHTML=“”;
Wrapper.innerHTML++=“成绩较低的学生为:“+Student[MinID]+”,等于“+Min+”;
Wrapper.innerHTML+=“成绩较高的学生为:“+Student[MaxID]+”,等于“+Max+”;
Wrapper.innerHTML+=“
”; Wrapper.innerHTML++=“平均成绩较低的学生为:“+Student[AvgMinID]+”,等于“+AvgMin+”; Wrapper.innerHTML+=“平均成绩较高的学生为:“+Student[AvgMaxID]+”,等于“+AvgMax+”; var CourseMin=CourseMinID=CourseMax=courseaxid=CourseAvgMin=CourseAvgMinID=CourseAvgMax=CourseAvgMaxID=0; CourseMin=CourseMax=CourseAvgMin=CourseAvgMax=未定义; 对于(变量i=0,j=0;iCheckMin | |(CourseMin的类型==“未定义”)){ CourseMin=CheckMin; CourseMinID=i; } var CheckMax=数学最大值(c0[i],c1[i],c2[i]); if(CourseMaxCourseAvgMax | |(CourseAvgMax的类型==“未定义”)){ CourseAvgMax=平均值; CourseAvgMaxID=parseInt(j); } } console.log(CourseMaxID); Wrapper.innerHTML+=“
”; Wrapper.innerHTML++=“成绩较低的课程有:“+NMap[CourseMinID]+”,等于“+CourseMin+”; Wrapper.innerHTML+=“成绩较高的课程有:“+NMap[CourseMaxID]+”,等于“+CourseMax+”; Wrapper.innerHTML+=“
”; Wrapper.innerHTML++=“平均成绩较低的课程有:“+NMap[CourseAvgMinID]+”,等于“+CourseAvgMin+”; Wrapper.innerHTML++=“平均成绩较高的课程有:“+NMap[CourseAvgMaxID]+”,等于“+CourseAvgMax+”; 返回null; }; Math.avg=函数(){ var平均值=0; 变量表=参数; 对于(变量i=0;i
在控制台中检查CourseMaxID和CourseMinID的输出后,CourseMinID的索引为3,但NMap只有3个值(索引为0、1、2)。所以我相信这就是为什么,例如,你看到:
“成绩较低的课程有:“+NMap[CourseMin]+”,等于“+CourseMin未定义,因为索引超出了范围

以下是解决CourseMinID和CourseMaxID问题的方法: 将
CourseMinID
的定义更改为
Math.floor(j)-1
CourseMaxID
更改为等于
Math.ceil(j)

对浮点值调用parseInt()似乎没有达到预期的结果

我不完全确定为什么每次都选择将j增加0.5,但从观察中我注意到,对于CourseMax/CourseMinID,您希望使用我上面提到的计算

另一个注意事项是,对于课程平均值,您实际上是在输出学生的平均值。所以你需要改变你的逻辑。在我看来,您将水平行的等级作为平均值函数的参数:

var Avg = Math.avg(c0[i], c1[i], c2[i]);
这并不是你想要在课程平均成绩中解析的内容。我将定义另一个Avg函数(在这里我们称它为
newAvg()
),它将单个数组(而不是多个参数)作为输入,然后调用
Math.Min