Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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_Average - Fatal编程技术网

javascript中五个值的平均值

javascript中五个值的平均值,javascript,average,Javascript,Average,我在一所特许学校工作,我正在学习javascript。我有一些代码是由以前担任我的职位的人编写的,在我看来,它应该是有效的,但事实并非如此 这是我在我的SIS中的自定义HTML页面中的内容: GED Status: <script language="Javascript">gedCheck('~(ELC_tspp_GED_read_score)','~ (ELC_tspp_GED_wri_score)','~(ELC_tspp_math_GED_score)','~(ELC_sci

我在一所特许学校工作,我正在学习javascript。我有一些代码是由以前担任我的职位的人编写的,在我看来,它应该是有效的,但事实并非如此

这是我在我的SIS中的自定义HTML页面中的内容:

GED Status: <script language="Javascript">gedCheck('~(ELC_tspp_GED_read_score)','~ (ELC_tspp_GED_wri_score)','~(ELC_tspp_math_GED_score)','~(ELC_science_state_exam_score)','~(soc_sci_state_exam_score)')</script>
GED状态:gedCheck(“~(ELC)科学州考试分数)”,“~(ELC)科学州考试分数)”,~(soc)科学州考试分数)
这似乎正确地从各种DB字段中检索了值,因为javascript例程正在评估每个值,以确保它至少为410。但就这么多了

下面是javascript例程代码:

function gedCheck(read,wri,math,sci,soc) {

if( read < 0 && read > 1000 )
    read = 0;
if( wri < 0 && wri > 1000 )
    wri = 0;
if( math < 0 && math > 1000 )
    math = 0;
if( sci < 0 && read > 1000 )
    read = 0;
if( soc < 0 && soc > 1000 )
    soc = 0;        

if ( (read >= 410) && (wri >= 410) && (math >= 410) && (sci >= 410) && (soc >= 410) ) {
    if( read+wri+math+sci+soc >= 2250 )
        document.write( "PASSED" )
}
else
    document.write( "NOT PASSED" )
}
函数gedCheck(读取、wri、数学、sci、soc){
如果(读取<0&&读取>1000)
read=0;
如果(wri<0&&wri>1000)
wri=0;
如果(数学<0&&math>1000)
数学=0;
如果(sci<0&&read>1000)
read=0;
如果(soc<0&&soc>1000)
soc=0;
如果((读>=410)和&(wri>=410)和&(数学>=410)和&(sci>=410)和&(soc>=410)){
如果(读取+wri+数学+sci+soc>=2250)
文件。写入(“通过”)
}
其他的
文件。写入(“未通过”)
}
应该检查GED测试中的每个分数至少为410,所有分数的总和至少为2250。然而,它并没有达到最后一部分。如果所有分数都超过410,则返回“通过”

我试过了,但也没用

function gedCheck(read,wri,math,sci,soc) {

if( read < 0 && read > 1000 )
    read = 0;
if( wri < 0 && wri > 1000 )
    wri = 0;
if( math < 0 && math > 1000 )
    math = 0;
if( sci < 0 && read > 1000 )
    read = 0;
if( soc < 0 && soc > 1000 )
    soc = 0;        

if ( (read >= 410) && (wri >= 410) && (math >= 410) && (sci >= 410) && (soc >= 410) )   {
    if( read+wri+math+sci+soc/5 >= 450 )
        document.write( "PASSED" )
}
else
    document.write( "NOT PASSED" )
}
函数gedCheck(读取、wri、数学、sci、soc){
如果(读取<0&&读取>1000)
read=0;
如果(wri<0&&wri>1000)
wri=0;
如果(数学<0&&math>1000)
数学=0;
如果(sci<0&&read>1000)
read=0;
如果(soc<0&&soc>1000)
soc=0;
如果((读>=410)和&(wri>=410)和&(数学>=410)和&(sci>=410)和&(soc>=410)){
如果(读取+wri+数学+sci+soc/5>=450)
文件。写入(“通过”)
}
其他的
文件。写入(“未通过”)
}
有人能帮我解决这个问题吗?如果平均值为450,那么它要么对所有5个数字进行平均,然后返回“通过”,要么简单地将所有5个数字相加,然后返回“通过”,如果总和为2250或更大,那么返回“通过”?

怎么办

if ((read >= 410) && 
    (wri  >= 410) && 
    (math >= 410) && 
    (sci  >= 410) && 
    (soc  >= 410) &&
    (read+wri+math+sci+soc >= 2250)) {    

    document.write( "PASSED" )
} else {

    document.write( "NOT PASSED" )
}

要获得平均值,您需要执行以下操作:

(((read + wri + math + sci + soc) / 5) > 450)
加法周围的括号确保将所有分数之和除以5。按照现在的方式,您只需将
soc
分数除以5

编辑(重写整个方法):

函数gedCheck(读取、wri、数学、sci、soc){
//正如前面所说的,这些都应该是ORs
//如果分数小于0或大于1000
如果(读取<0 | |读取>1000){
read=0;
}
if(wri<0 | | wri>1000){//为了绝对清晰起见,我更喜欢在所有if/else语句周围加括号
wri=0;
}
如果(数学<0 | |数学>1000){
数学=0;
}
如果(sci<0 | |读取>1000){
read=0;
}
如果(soc<0 | | soc>1000){
soc=0;
}
如果(阅读>=410&&//,那么这样做只会让学生及格
如果满足所有条件,wri>=410&&//。
数学>=410&&
sci>=410&&
soc>=410&&
((read+wri+math+sci+soc)>=2250 | |//为了清晰起见,将更多内容分隔开
((读+wri+数学+sci+soc)/5)>450){
//要么全部得分超过2250分
//或者所有5名学生的平均成绩都超过450分
文件。写入(“通过”)
}
其他的
文件。写入(“未通过”)
}
功能gedCheck(读取、wri、数学、sci、soc){
如果(读取<0 | |读取>1000)
read=0;
如果(wri<0 | | wri>1000)
wri=0;
如果(数学<0&&math>1000)
数学=0;
如果(sci<0&&read>1000)
read=0;
如果(soc<0&&soc>1000)
soc=0;
var总计=读取+wri+数学+sci+soc;
如果(read>=410&&wri>=410&&math>=410&&sci>=410&&soc>=410&&total>=2250){
文件。书写(“通过”);
}否则{
文件。填写(“未通过”);
}
}
整个第一部分都是不可能的代码。它正在检查一个数字是否既小于零又大于1000。显然不可能,所以我把它改为使用或


我还创建了一个total变量,您可以用与其他所有变量相同的方式进行检查。

在此处使用数组将帮助您减少重复代码的数量

function gedCheck(read, wri, math, sci, soc) {
   var subjects, totalScore, averageScore;

   subjects = [read, wri, math, sci, soc];
   totalScore = 0;
   averageScore = 0;

   for (var i = 0; i < subjects.length; i++) {
       if (subjects[i] < 0 || subjects[i] > 1000) {
           subjects[i] = 0;
       }
       totalScore += subjects[i];
   };

   averageScore = totalScore / subjects.length;

   if (averageScore >= 450 || totalScore >= 2250) {
       document.write("PASSED");
   } else {
       document.write("NOT PASSED");
   }
}
函数gedCheck(读取、wri、数学、sci、soc){
var受试者,总分,平均分;
科目=[阅读、wri、数学、sci、soc];
总分=0;
平均得分=0;
对于(变量i=0;i1000){
受试者[i]=0;
}
总分+=受试者[i];
};
averageScore=总分/受试者长度;
如果(平均得分>=450 | |总得分>=2250){
文件。书写(“通过”);
}否则{
文件。填写(“未通过”);
}
}
第一个循环遍历每个主题,并在必要时将其设置为零,然后将其添加到总分变量中

然后根据受试者的数量平均总分


然后,如果平均分数等于或大于450,或等于或大于2250,则通过。

if(读<0&&read>1000):正如你所说,你只是在学习,提示是永远不会这样。这里你要问的是,“在同一时间读取的数据是否小于0,但也大于1000?”,应该使用| |而不是&&&意思是“如果这个和这个”,意思是“如果这个,或者这个”在您的例子中,将其更改为“如果读取值小于零,或大于1000,请执行此操作”,这是可能的,因为数学中没有任何数字同时小于零,但大于1000。注意:|是shift+\key,被称为“管道”,我想这就是他这么做的原因-也许他只是想确保每个值都设置为0开始?或者一个人从来没有这样做过吗?那样的话,它就不会发生了
function gedCheck(read, wri, math, sci, soc) {

    if( read < 0 || read > 1000 )
        read = 0;

    if( wri < 0 || wri > 1000 )
        wri = 0;

    if( math < 0 && math > 1000 )
        math = 0;

    if( sci < 0 && read > 1000 )
        read = 0;

    if( soc < 0 && soc > 1000 )
        soc = 0;

    var total = read + wri + math + sci + soc;

    if (read >= 410 && wri >= 410 && math >= 410 && sci >= 410 && soc >= 410 && total >= 2250)   {   
        document.write("PASSED");
    } else {
        document.write("NOT PASSED");
    }
}
function gedCheck(read, wri, math, sci, soc) {
   var subjects, totalScore, averageScore;

   subjects = [read, wri, math, sci, soc];
   totalScore = 0;
   averageScore = 0;

   for (var i = 0; i < subjects.length; i++) {
       if (subjects[i] < 0 || subjects[i] > 1000) {
           subjects[i] = 0;
       }
       totalScore += subjects[i];
   };

   averageScore = totalScore / subjects.length;

   if (averageScore >= 450 || totalScore >= 2250) {
       document.write("PASSED");
   } else {
       document.write("NOT PASSED");
   }
}