所以我的程式希望用戶輸入學生的數量和他們的分數。根據最佳分數,它將遵循以下評分方案:
- 得分 > 或 = 最好 - 10 則成績為 A。
- 分數 > 或 = 最好 - 20 則等級為 B。
- 分數 > 或 = 最好 - 30,則等級為 C。
- 得分 > 或 = 最好 - 40 則等級為 D。
- 其他都是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);
}
當我運行代碼時,它有時會顯示正確的成績,有時卻不會。它應該顯示這個:
- 輸入學生人數:4
- 輸入分數:40
- 輸入分數:55
- 輸入分數:70
- 輸入分數:58
- 學生 0 成績為 40,成績為 C。學生 1 成績為 55,成績為 B。學生 2 成績為 70,成績為 A。學生 3 成績為 58,成績為 B。
相反,它顯示等級 A、A、A、B。
uj5u.com熱心網友回復:
看起來您正在迭代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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460416.html
標籤:javascript 数组 if 语句
