刚刚制作了这个极其简单的 GPA 计算器,想知道如何使用循环来避免大量的 switch 语句?我对 Java 很陌生,只是寻求一些建议,非常感谢任何其他改进程序的方法。预先感谢各位!
package helloPackage;
import javax.swing.JOptionPane;
public class GradePointAverage {
public static void main(String[] args) {
System.out.println("Welcome to the GPA calculator! Please enter your GPA into the popup window to find your GPA.");
String firstClassInput = JOptionPane.showInputDialog(null,"Please enter your grade for your first class: (A+, A, A-, B+, etc.)");
String firstClass = firstClassInput.toUpperCase();
String secondClassInput = JOptionPane.showInputDialog(null,"Please enter your grade for your second class: (A+, A, A-, B+, etc.)");
String secondClass = secondClassInput.toUpperCase();
String thirdClassInput = JOptionPane.showInputDialog(null,"Please enter your grade for your third class: (A+, A, A-, B+, etc.)");
String thirdClass = thirdClassInput.toUpperCase();
String fourthClassInput = JOptionPane.showInputDialog(null,"Please enter your grade for your fourth class: (A+, A, A-, B+, etc.)");
String fourthClass = fourthClassInput.toUpperCase();
String fifthClassInput = JOptionPane.showInputDialog(null,"Please enter your grade for your fifth class: (A+, A, A-, B+, etc.)");
String fifthClass = fifthClassInput.toUpperCase();
double firstGrade = 0.0;
double secondGrade = 0.0;
double thirdGrade = 0.0;
double fourthGrade = 0.0;
double fifthGrade = 0.0;
switch (firstClass){
case "A+": firstGrade = 4.33;
break;
case "A": firstGrade = 4.00;
break;
case "A-": firstGrade = 3.67;
break;
case "B+": firstGrade = 3.33;
break;
case "B": firstGrade = 3.00;
break;
case "B-": firstGrade = 2.67;
break;
case "C+": firstGrade = 2.33;
break;
case "C": firstGrade = 2.00;
break;
case "C-": firstGrade = 1.67;
break;
case "D+": firstGrade = 1.33;
break;
case "D": firstGrade = 1.00;
break;
case "D-": firstGrade = .67;
break;
case "F": firstGrade = 0.0;
break;
}
switch (secondClass){
case "A+": secondGrade = 4.33;
break;
case "A": secondGrade = 4.00;
break;
case "A-": secondGrade = 3.67;
break;
case "B+": secondGrade = 3.33;
break;
case "B": secondGrade = 3.00;
break;
case "B-": secondGrade = 2.67;
break;
case "C+": secondGrade = 2.33;
break;
case "C": secondGrade = 2.00;
break;
case "C-": secondGrade = 1.67;
break;
case "D+": secondGrade = 1.33;
break;
case "D": secondGrade = 1.00;
break;
case "D-": secondGrade = .67;
break;
case "F": secondGrade = 0.0;
break;
}
switch (thirdClass){
case "A+": thirdGrade = 4.33;
break;
case "A": thirdGrade = 4.00;
break;
case "A-": thirdGrade = 3.67;
break;
case "B+": thirdGrade = 3.33;
break;
case "B": thirdGrade = 3.00;
break;
case "B-": thirdGrade = 2.67;
break;
case "C+": thirdGrade = 2.33;
break;
case "C": thirdGrade = 2.00;
break;
case "C-": thirdGrade = 1.67;
break;
case "D+": thirdGrade = 1.33;
break;
case "D": thirdGrade = 1.00;
break;
case "D-": thirdGrade = .67;
break;
case "F": thirdGrade = 0.0;
break;
}
switch (fourthClass){
case "A+": fourthGrade = 4.33;
break;
case "A": fourthGrade = 4.00;
break;
case "A-": fourthGrade = 3.67;
break;
case "B+": fourthGrade = 3.33;
break;
case "B": fourthGrade = 3.00;
break;
case "B-": fourthGrade = 2.67;
break;
case "C+": fourthGrade = 2.33;
break;
case "C": fourthGrade = 2.00;
break;
case "C-": fourthGrade = 1.67;
break;
case "D+": fourthGrade = 1.33;
break;
case "D": fourthGrade = 1.00;
break;
case "D-": fourthGrade = .67;
break;
case "F": fourthGrade = 0.0;
break;
}
switch (fifthClass){
case "A+": fifthGrade = 4.33;
break;
case "A": fifthGrade = 4.00;
break;
case "A-": fifthGrade = 3.67;
break;
case "B+": fifthGrade = 3.33;
break;
case "B": fifthGrade = 3.00;
break;
case "B-": fifthGrade = 2.67;
break;
case "C+": fifthGrade = 2.33;
break;
case "C": fifthGrade = 2.00;
break;
case "C-": fifthGrade = 1.67;
break;
case "D+": fifthGrade = 1.33;
break;
case "D": fifthGrade = 1.00;
break;
case "D-": fifthGrade = .67;
break;
case "F": fifthGrade = 0.0;
break;
}
double total = firstGrade + secondGrade + thirdGrade + fourthGrade + fifthGrade;
double GPA = total / 5;
System.out.println("Your GPA is: " + GPA);
}
}