/* GPA program, Spring 2012 600.107 */ import java.util.Scanner; public class gpa { public static void main(String[] args) { // variable declarations Scanner keyboard = new Scanner(System.in); int numCourses, courseNum; String grade; // letter grade for one course double credits; // credits for one course double points; // point value for grade for one course double totalCredits=0; // for all courses double totalPoints=0; // sum points*credits for all courses double gpa; System.out.print("How many courses? "); numCourses = keyboard.nextInt(); System.out.println("Please enter letter grades and credits (A- 3.5)"); courseNum = 1; while (courseNum <= numCourses) { System.out.print(courseNum + ") "); courseNum = courseNum + 1; grade = keyboard.next().toUpperCase(); // stops at first space /* NOT THE SAME: grade = keyboard.next(); grade.toUpperCase(); // not reassigned to grade variable */ credits = keyboard.nextDouble(); totalCredits = totalCredits + credits; points = convertGrade(grade); totalPoints = totalPoints + points*credits; } // System.out.println("totalCredits: " + totalCredits); // System.out.println("GPA is " + totalPoints / totalCredits); gpa = totalPoints / totalCredits; System.out.printf("GPA is %.3f", gpa); System.out.println(); // go to next line if (gpa >= 3.5) System.out.println("Woohoo - Dean's list!"); else if (gpa < 2.0) System.out.println("uh-oh, Ac Pro... "); } public static double convertGrade(String grade) { double pnts; char letter = grade.charAt(0); if (letter == 'A') pnts = 4; else if (letter == 'B') pnts = 3; else if (letter == 'C') pnts = 2; else if (letter == 'D') pnts = 1; else pnts = 0; if (grade.length() > 1) { //if there's a + and not A, add .3 if (grade.charAt(1) == '+' && letter != 'A') pnts = pnts + .3; //if there's a - and not D, subtract .3 else if (grade.charAt(1) == '-' && letter != 'D') pnts = pnts - .3; } return pnts; } }