2016-11-17 153 views
0

我對此很新穎。我相信錯誤是與我的數組。任何建議將不勝感激。當我運行它時,它允許我輸入字母等級和信用時間,但是我沒有得到任何輸出。我的代碼沒有編譯錯誤,但沒有輸出

import java.util.Scanner; 

/** 
* Calculating gpa 
* 
* @author Brooklyn 
* @version1 11/15/2016 
* 
*/ 

public class CalculateGPA { 
    /** 
    * 
    * Entry point for the program javadoc 
    * 
    */ 

    public static void main(String[] args) { 
     // declare vars 

     // input: prompt user to enter letter grade and credit hours 
     System.out.println("What are your letter grades?"); 
     Scanner input = new Scanner(System.in); 
     String x = input.nextLine(); 
     System.out.println("How many credit hours are you taking?"); 
     int v = input.nextInt(); 
     int[] creditHours = new int[v]; 
     for (int i = 0; i < creditHours.length; i++) { 
      creditHours[i] = input.nextInt(); 
     } 

     char[] letterGrade = x.toCharArray(); 
     for (int i = 0; i < letterGrade.length; i++) { 
      letterGrade[i] = input.next().charAt(i); 
     } 

     // Processing: calculate gpa 
     double gpa = calculateGpa(letterGrade, creditHours); 
    } 
    // output: display GPA 
    // displayGPA(gpa); 

    /** Method calculates GPA */ 
    public static double calculateGpa(char[] letterGrade, int[] creditHours) { 
     int totalQuality = 0; 
     int numericGrade; 
     double gpa = 0.0; 

     // double qualityPoint = 4 * creditHours[0]; 
     if (letterGrade.equals("A")) { 
      numericGrade = 4; 
      totalQuality += numericGrade; 

     } else if (letterGrade.equals("B")) { 
      numericGrade = 3; 
      totalQuality += numericGrade; 

     } else if (letterGrade.equals("C")) { 
      numericGrade = 2; 
      totalQuality += numericGrade; 

     } else if (letterGrade.equals("D")) { 
      numericGrade = 1; 
      totalQuality += numericGrade; 

     } else if (letterGrade.equals("F")) { 
      numericGrade = 0; 
      totalQuality += numericGrade; 
     } 

     int totalHours = creditHours[0]; 
     gpa = totalQuality/totalHours; 
     return totalQuality/totalHours; 
    } 

    public static void displayGPA(double gpa) { 
     System.out.println("Overall GPA is" + gpa); 

    } 

} 
+3

你永遠不會調用'displayGPA'。這是問題。 –

+0

好吧我修好了。我曾經評論過它,因爲我不能讓它運行,但我試圖在主方法之外調用該函數。但是,我仍然沒有得到輸出。 – bkagodwin

+0

請通過調用'displayGPA'來更新您問題中的代碼。 – Tim

回答

0

在你的main方法中調用這個函數。 displayGPA(「GPA Is」+ gpa);

+0

好的,我修正了這個問題。我試圖去調用它,但在主要方法之外,所以我只是評論它。但我仍然沒有得到任何輸出。 – bkagodwin

0

爲了您的理解,我修改了您正確計算GPA的現有代碼。
我的代碼考慮了與年級相關的學分。
舉例說,你得到的A有1個學分,B有5個學分。
因此,你的成績將是每門課程(學分*等級值)/(學時)
在這種情況下,(1 * 4 + 5 * 3)/(1 + 5) = 3.16

import java.util.Scanner; 
public class CalculateGPA { 
private static Scanner input = new Scanner(System.in); 

public static void main(String[] args) { 

    // get number of courses 
    System.out.println("How many courses have you taken ?"); 
    int n = input.nextInt(); 

    // get grades for those courses 
    char letterGrade[] = new char[n]; 
    for (int i = 0; i < n; i++) { 
     System.out.println("What are your letter grades for course " + (i + 1)); 
     String g = input.next(); 
     letterGrade[i] = g.charAt(0); 
    } 

    // get credit hours associated with those courses 
    int creditHours[] = new int[n]; 
    for (int i = 0; i < n; i++) { 
     System.out.println(
       "Enter credit hours for your course number: " + (i + 1) + " where you got " + letterGrade[i]); 
     creditHours[i] = input.nextInt(); 
    } 

    // Processing: calculate gpa 
    double gpa = calculateGpa(letterGrade, creditHours); 
    // output: display GPA 
    displayGPA(gpa); 
} 

/** Method calculates GPA */ 
public static double calculateGpa(char[] letterGrade, int[] creditHours) { 

    // formula: (gradeValue1 * creditHours1 + gradeValue2 * creditHours2 + ...)/(creditHours1 + creditHours2 + ...) 

    int totalQuality = 0; 
    int creditHoursTotal = 0; 
    double gpa = 0.0; 

    for (int i = 0; i < letterGrade.length; i++) { 
     switch (letterGrade[i]) { 
     case 'A': 
      totalQuality += 4 * creditHours[i]; 
      creditHoursTotal += creditHours[i]; 
      break; 
     case 'B': 
      totalQuality += 3 * creditHours[i]; 
      creditHoursTotal += creditHours[i]; 
      break; 
     case 'C': 
      totalQuality += 2 * creditHours[i]; 
      creditHoursTotal += creditHours[i]; 
      break; 
     case 'D': 
      totalQuality += 1 * creditHours[i]; 
      creditHoursTotal += creditHours[i]; 
      break; 
     case 'F': 
      // zero score and so there will be no impact on totalQuality 
      break; 
     default: 
      System.out.println("Invalid letter"); 
      break; 
     } 
    } 

    gpa = (double) totalQuality/creditHoursTotal; 
    return gpa; 
} 

public static void displayGPA(double gpa) { 
    System.out.println("Overall GPA = " + gpa); 

} 

} 

採樣運行
多少課程,你們採取了?
你有什麼字母等級的課程1
一個
你有什麼字母等級的課程2

輸入信用卡小時爲您課程編號:1,你有一個
進入學分爲你的課程數:2,你有乙
總體GPA = 3.1666666666666665

相關問題