大家好,这是其中一个时代,解决方案正在盯着我,但我似乎无法找到它!所以请耐心等待我:说明如下:
完成该功能,以便找到传递给它的三个分数的平均值,并返回与该分数相关联的字母值。
数字分数字母等级
90 <= score <= 100 'A'
80 <= score < 90 'B'
70 <= score < 80 'C'
60 <= score < 70 'D'
0 <= score < 60 'F'
测试值均介于0和100之间。无需检查负值或大于100的值。
这是我的解决方案:
function getGrade (s1, s2, s3) {
var score = (s1 + s2 + s3) / 3;
if (90 <= score && score >= 100) {
return 'A';
} else if (80 <= score && score > 90) {
return 'B';
} else if (70 <= score && score > 80) {
return 'C';
} else if (60 <= score && score > 70) {
return 'D';
} else if (0 <= score && score > 60) {
return 'F';
}
}
getGrade(5,40,93);
getGrade(30,85,96);
getGrade(92,70,40);
不能为我的生活弄清楚我做错了什么。
答案 0 :(得分:6)
你在if语句中的条件都是错误的。这些是正确的条件
function getGrade (s1, s2, s3) {
var score = (s1 + s2 + s3) / 3;
if (score >= 90 && score <= 100) {
return 'A';
} else if (score >= 80 && score < 90) {
return 'B';
} else if (score >= 70&& score < 80) {
return 'C';
} else if (score >= 60 && score < 70) {
return 'D';
} else {
return 'F';
}
}
答案 1 :(得分:3)
您的条件有误,如果您的代码改为此,则不需要进行多次检查:
function getGrade (s1, s2, s3) {
var score = (s1 + s2 + s3) / 3;
if (score >= 90 && score <= 100) {
return 'A';
} else if (score >= 80 ) {
return 'B';
} else if (score >= 70 ) {
return 'C';
} else if (score >= 60) {
return 'D';
} else{
return 'F';
}
}
console.log(getGrade(5,40,93));
console.log(getGrade(30,85,96));
console.log(getGrade(92,70,40));
&#13;
答案 2 :(得分:0)
您只能使用if
个没有else
部分的子句,并且只检查下限,因为您已经检查了上限。
缺少检查上方100
,因为您的给定范围介于0
和100
之间。
function getGrade(s1, s2, s3) {
var score = (s1 + s2 + s3) / 3;
if (score >= 90) {
return 'A';
}
if (score >= 80) {
return 'B';
}
if (score >= 70) {
return 'C';
}
if (score >= 60) {
return 'D';
}
return 'F';
}
console.log(getGrade(5, 40, 93));
console.log(getGrade(30, 85, 96));
console.log(getGrade(92, 70, 40));
答案 3 :(得分:0)
每当发现自己编写if
-else
语句的长链时,请查看是否可以找到模式并使用查找表。在这里,我们只有5个等级的水桶,但是如果我们有20或100个水桶呢?您会看到if
-else
方法不可扩展。
在这种情况下,如果我们使用字符串"FFFFFFDCBAA"
,那么我们以将分数除以10后可以索引的方式枚举了所有5个等级的存储桶。该代码为:{{ 1}},其中"FFFFFFDCBAA"[score/10|0]
是下限运算,将小数点切掉。多余的| 0
处理的是100。
第二,函数"A"
的参数没有意义。为什么要得分3?如果我们有4分或20分,则无法使用该函数,而我们必须用正确数量的参数重写整个函数(而20个参数中的一个非常丑陋)。我知道这个标题是kata作者给您的,但是没有理由我们不能使它使用(s1, s2, s3)
处理任何数量的参数并仍然通过测试。如果我们使用(...args)
取参数的平均值,则剩下以下解决方案:
args.reduce((a, e) => a + e, 0) / args.length