我應該創建一個程序來執行以下操作:學生在學期內必須參加兩次測驗和兩次考試。最終成績的計算中將剔除一項測驗和一項考試。剩余測驗占最終成績的 40%,考試占最終成績的 60%。最終成績按直線計算:90%及以上為“A”,低于90%至80%為B等。該程序應允許教授輸入學生姓名、身份證號碼、兩個測驗分數和兩次考試成績,然后計算并輸出學生的最終成績。下面是我寫的代碼。它執行得很好,沒有任何錯誤,我感覺我已經正確地完成了所有事情;但是,無論我輸入什么分數,程序都會返回字母等級“A”。public static void main(String[] args){ //Declare all variables String name; String idNum; int q1; int q2; int e1; int e2; int bestQuiz; int bestExam; double score; char letterGrade; Scanner kbd; kbd = new Scanner(System.in); System.out.println("Enter student's name: "); name = kbd.nextLine(); System.out.println("Enter student's ID number: "); idNum = kbd.nextLine(); System.out.println("Enter the quiz scores: "); q1 = kbd.nextInt(); q2 = kbd.nextInt(); System.out.println("Enter the exam scores: "); e1 = kbd.nextInt(); e2 = kbd.nextInt(); bestQuiz = max(q1, q2); bestExam = max(e1, e2); score = computeRawPercentage(bestQuiz, bestExam); letterGrade = finalGrade( score ); System.out.print(name + " " + idNum + " "); System.out.println("Final Grade: " + letterGrade); } //Max method public static int max(int n1, int n2){ int big; if (n1 > n2){ big = n1; } else { big = n2; } return big; } //computeRawPercentage method public static double computeRawPercentage(int quizScore, int examScore){ return ((quizScore * .4)+ (examScore * .6))*100; } //finalGrade method public static char finalGrade(double grade){ char letterGrade; if (grade >= 90.0) letterGrade = 'A'; else if ((grade >= 80.0)&&(grade < 90.0)) letterGrade = 'B'; else if ((grade >= 70.0)&&(grade < 80.0)) letterGrade = 'C'; else if ((grade >= 60.0)&&(grade < 70.0)) letterGrade = 'D'; else letterGrade = 'F'; return letterGrade; } }
1 回答

犯罪嫌疑人X
TA貢獻2080條經驗 獲得超4個贊
你的問題是這一行:
return ((quizScore * .4)+ (examScore * .6))*100;
在這里,您將您的分數乘以該分數,這100將給您一個類似于7100應有的分數71(顯然在上面90.0)。刪除100乘法就可以了:
return ((quizScore * .4) + (examScore * .6));
測試運行:
Enter student's name:
TestName
Enter student's ID number:
12345
Enter the quiz scores:
55
65
Enter the exam scores:
65
86
77.6
TestName 12345 Final Grade: C
這是假設您輸入的分數75%為75。
添加回答
舉報
0/150
提交
取消