根据最佳成绩查找成绩

Finding the grade based on the best score

所以我的程序希望用户输入学生人数和他们的分数。根据最佳分数,它将遵循以下评分方案:

  1. 得分 > or = 最好 - 10 则成绩为 A。
  2. 分数>或=最好 - 20则成绩为B。
  3. 分数>或=最好 - 30则成绩为C。
  4. 分数 > 或 = 最好 - 40 则等级为 D。
  5. 其他都是F

到目前为止,这是我的代码:

var readlineSync = require('readline-sync')


let scoreArray = []
let best = 0

students = readlineSync.question('Enter the number of students: ');

for (var x = 0; x < students; x++){
 score = readlineSync.question('Enter Score: ')
 scoreArray.push(score);
}

for (var i = 0; i < scoreArray.length; i++){
   var data = scoreArray[i];
   if(best < scoreArray[i]){
   best = scoreArray[i];
 }
   if(scoreArray[i] >= (best-10)){
     grade = 'A';
   }else if(scoreArray[i] >= (best-20)){
     grade = 'B';
   }else if(scoreArray[i] >= (best-30)){
     grade = 'C';
   }else if(scoreArray[i] >= (best-40)){
     grade = 'D';
   }else {
     grade = 'F';
  }
 console.log('Student ' + i + ' score is ' + scoreArray[i] +' and grade is ' +   grade);

 }

当我 运行 代码时,它有时会显示正确的成绩,有时却不会。它应该显示:


而是显示等级 A、A、A、B。

看起来您正在迭代 scoreArray 并在此过程中进行最佳更新。您应该首先从 scoreArray 中获得最高分数,这样您就知道最好的开始,然后迭代 scoreArray。有关更多信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max,但将 var best = Math.max(...scoreArray); 放在 for 循环之前,然后您的条件逻辑应该可以工作。

scoreArray = [49, 81, 72, 80, 81, 36, 58];
var best = Math.max(...scoreArray);

for (var i = 0; i < scoreArray.length; i++) {
  var data = scoreArray[i];

  if (scoreArray[i] >= (best - 10)) {
    grade = 'A';
  } else if (scoreArray[i] >= (best - 20)) {
    grade = 'B';
  } else if (scoreArray[i] >= (best - 30)) {
    grade = 'C';
  } else if (scoreArray[i] >= (best - 40)) {
    grade = 'D';
  } else {
    grade = 'F';
  }

  console.log('Student ' + i + ' score is ' + scoreArray[i] + ' and grade is ' + grade);

}