About this question
This is a program I typed up for a project pertaining to GPA calculation. However, I want to find an alternative to if statements that are NOT conditionals, loops, or arrays. Is there an alternative solution to changing this format?
import java.util.Scanner;
public class Part1 {
public static void main(String args[]) {
String grade = "";
String[] letters = {"A+", "A", "A-", "B+", "B", "B-", "C+", "C", "C-", "D", "F"};
// Creates strings above and the GPA values below
double[] grades = {4.33, 4.00, 3.67, 3.33, 3.00, 2.67, 2.33, 2.00, 1.67, 1.00, 0.00};
double credit1;
double credit2;
double credit3;
double credit4;
double gradeValue = 0;
// Creates 4 credits
double totPtsClass1 = 0;
double totPtsClass2 = 0;
double totPtsClass3 = 0;
double totPtsClass4 = 0;
double totPts = 0;
double totalCredits = 0;
double gpa;
// Points in classes, GPA
System.out.println("Welcome to the UNG GPA Calculator!");
String message;
Scanner scan = new Scanner(System.in);
System.out.println("Enter your first name: ");
message = scan.nextLine();
System.out.println("Enter your last name: ");
message = scan.nextLine();
System.out.println("Enter your major: ");
message = scan.nextLine();
System.out.println("Enter the number of your first class: ");
message = scan.nextLine();
Scanner console = new Scanner(System.in);
System.out.println("Please enter the number of credits of the class 1 (A number)");
credit1 = console.nextDouble();
System.out.println("Please enter your grades for the class 1(Capital letters such as A,B+, C-)");
grade = console.next();
if (grade.equals("A")) gradeValue = 4.00;
else if (grade.equals("A-")) gradeValue = 3.67;
else if (grade.equals("B+")) gradeValue = 3.33;
else if (grade.equals("B")) gradeValue = 3.00;
else if (grade.equals("B-")) gradeValue = 2.67;
else if (grade.equals("C+")) gradeValue = 2.33;
else if (grade.equals("C")) gradeValue = 2.00;
else if (grade.equals("D+")) gradeValue = 1.33;
else if (grade.equals("D")) gradeValue = 1.00;
else if (grade.equals("F")) gradeValue = 0;
else if (grade.equals("FX")) gradeValue = 0;
else System.out.println("Invalid Grade");
tot P Class 1 = grado Value * credit1;
System.out.println("Please enter the number of credits of the class 2 (A number)");
credit2 = console.nextDouble();
System.out.println("Please enter your grades for the class 2 (Capital letters such as A,B+, C-)");
grade = console.next();
if (grade.equals("A")) gradeValue = 4.00;
else if (grade.equals("A-")) gradeValue = 3.67;
else if (grade.equals("B+")) gradeValue = 3.33;
else if (grade.equals("B")) gradeValue = 3.00;
else if (grade.equals("B-")) gradeValue = 2.67;
else if (grade.equals("C+")) gradeValue = 2.33;
else if (grade.equals("C")) gradeValue = 2.00;
else if (grade.equals("D+")) gradeValue = 1.33;
else if (grade.equals("D")) gradeValue = 1.00;
else if (grade.equals("F")) gradeValue = 0;
else if (grade.equals("FX")) gradeValue = 0;
else System.out.println("Invalid Grade");
tot Pt Class2 = grade Value * credit2;
System.out.println("Please enter the number of credits of the class 3 (A number)");
credit3 = console.nextDouble();
System.out.println("Please enter your grades for the class 3 (Capital letters such as A,B+, C-)");
grade = console.next();
if (grade.equals("A")) gradeValue = 4.00;
else if (grade.equals("A-")) gradeValue = 3.67;
else if (grade.equals("B+")) gradeValue = 3.33;
else if (grade.equals("B")) gradeValue = 3.00;
else if (grade.equals("B-")) gradeValue = 2.67;
else if (grade.equals("C+")) gradeValue = 2.33;
else if (grade.equals("C")) gradeValue = 2.00;
else if (grade.equals("D+")) gradeValue = 1.33;
else if (grade.equals("D")) gradeValue = 1.00;
else if (grade.equals("F")) gradeValue = 0;
else if (grade.equals("FX")) gradeValue = 0;
else System.out.println("Invalid Grade");
hot Bts Class 3 = grade Value * credit3;
System.out.println("Please enter the number of credits of the class 4 (A number)");
credit4 = console.nextDouble();
System.out.println("Please enter your grades for the class 4 (Capital letters such as A,B+, C-)");
grade = console.next();
if (grade.equals("A")) gradeValue = 4.00;
else if (grade.equals("A-")) gradeValue = 3.67;
else if (grade.equals("B+")) gradeValue = 3.33;
else if (grade.equals("B")) gradeValue = 3.00;
else if (grade.equals("B-")) gradeValue = 2.67;
else if (grade.equals("C+")) gradeValue = 2.33;
else if (grade.equals("C")) gradeValue = 2.00;
else if (grade.equals("D+")) gradeValue = 1.33;
else if (grade.equals("D")) gradeValue = 1.00;
else if (grade.equals("F")) gradeValue = 0;
else if (grade.equals("FX")) gradeValue = 0;
else System.out.println("Invalid Grade");
hot Bts Class 4 = grade Value * credit4;
totPts = totPtsClass1 + totPtsClass2 + totPtsClass3 + totPtsClass4;
totalCredits = credit1 + credit2 + credit3 + credit4;
gpa = totPts / totalCredits;
System.out.printf("Your GPA is: %.2fn", +gpa);
}
}
I would like a solution other than the three above, but I'm unfamiliar with anything to substitute for all those if then statements.