需要一个用于评分系统的 JavaScript IF 语句

Need a JavaScript IF Statement for Grading System

本文关键字:分系统 JavaScript 语句 IF 用于 一个      更新时间:2023-09-26

>我需要有人告诉我如何在用户输入成绩后尝试添加 IF 语句,如果分数大于 100 或小于 0,该语句需要在末尾显示警报。我尝试了很多不同的东西,但真的不知道如何呈现它。如果有人能告诉我如何做,那就太好了。

var mark;
var grade;
grade = "Not Yet Graded";
mark = prompt( "Please input the mark(%)" );
mark = parseInt( mark, 10 ); // see comment

if( mark > 70 )
{
grade = "First Class";
}
else if( mark > 60 )
{
grade = "Upper Second";
}
else if( mark > 50 )
{
grade = "Lower Second";
}
else if( mark > 40 )
{
grade = "Third Class";
}
else if( mark < 40 )
{
grade = "Fail";
}

alert( "Mark: " + mark + "% - Grade: " + grade );
}
else 
{
alert( "Invalid mark, outside range 0-100" );
}

在开始评分之前,您应该检查您的值范围,例如

if (mark < 0 || mark > 100)
{
alert('Invalid mark, outside range 0-100');
}
else if (mark > 70)
{
  grade = 'First Class';
} 
else if (mark > 60)
{
  grade = 'Upper Second';
} 
else if (mark > 50)
{
  grade = 'Lower Second';
} 
else if (mark > 40)
{
  grade = 'Third Class';
} 
else if (mark <= 40)
{
  grade = 'Fail';
}

另请注意,您需要mark >= 40第三类,或者如果mark <= 40,则将用户的成绩标记为失败。否则,当分数40时,您将错过评分。

最后,您只需检查grade是否已初始化即可显示成绩警报。

if (grade != null)
{
  alert('Mark: ' + mark + '% - Grade: ' + grade);
}

似乎有效:

var mark;
var grade;
grade = "Not Yet Graded";
mark = prompt( "Please input the mark(%)" );
mark = parseInt( mark, 10 ); // see comment
if (mark>100) grade="unclassified";
else if( mark > 70 ) grade = "First Class";
else if( mark > 60 ) grade = "Upper Second";
else if( mark > 50 ) grade = "Lower Second";
else if( mark > 40 ) grade = "Third Class"
else if( mark >= 0 ) grade = "Fail";
else grade="unclassified";
if (grade!="unclassified") alert( "Mark: " + mark + "% - Grade: " + grade );
else alert( "Invalid mark, outside range 0-100" );

它首先检查超过 100 的标记。一旦if子句之一成功,所有elseif都将失败。它将"未分类"存储为等级。不及格等级为任何分数 0 到 40(包括 0 到 40),如果失败,则成绩默认为未分类。我们现在脱离循环并分别评估grade - 如果它不是"未分类",那么该标记是有效的,我们提醒成绩,如果"等级"等于"未分类",则警报以"无效标记,超出范围 0-100"表示。

还有一件事,在 JavaScript 中,如果在比较后只有一行代码,则不需要使用大括号 {},因此代替:

else if( mark > 60 ) {grade = "Upper Second";}

我们可以使用:

else if( mark > 60 ) grade = "Upper Second";

(尽管对于需要 {} 的函数来说,无论函数体中的行数如何,情况并非如此。

您的代码失败,因为您没有检查标记是否低于(或等于)100 和高于(或等于)0。这样,如果你得到110,你得到头等舱,如果你得到-10,你会失败。

您只需要确保在 if 的第一个系列中标记小于或等于 100,在最后一个 if 中大于或等于 0,然后在提醒标记再次介于 0 和 100(包含)之间之前打印要打印的内容。这样做:

if( mark > 70 && mark <= 100)
{
grade = "First Class";
}
else if( mark > 60 && mark <= 100)
{
grade = "Upper Second";
}
else if( mark > 50 && mark <= 100)
{
grade = "Lower Second";
}
else if( mark > 40 && mark <= 100)
{
grade = "Third Class";
}
else if( mark < 40 && mark >= 0)
{
grade = "Fail";
}
if (mark <= 100 && mark >= 0) {
alert( "Mark: " + mark + "% - Grade: " + grade );
}
else 
{
alert( "Invalid mark, outside range 0-100" );
}

或者你也可以这样做(检查标记是否仅在开头介于 0 和 100 之间):

if (mark >= 0 && mark <= 100) {
   if( mark > 70)
    {
    grade = "First Class";
    }
    else if( mark > 60)
    {
    grade = "Upper Second";
    }
    else if( mark > 50)
    {
    grade = "Lower Second";
    }
    else if( mark > 40)
    {
    grade = "Third Class";
    }
    
    else if( mark < 40)
    {
    grade = "Fail";
    }
    }
else {
alert( "Invalid mark, outside range 0-100" );
}
    if (mark <= 100 && mark >= 0) {
    alert( "Mark: " + mark + "% - Grade: " + grade );
    }