2016-11-17 23 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

メインメソッドでこの関数を呼び出します。 displayGPA( "GPA Is" + gpa);

+0

さて、私はそれを修正しました。私はそれを呼び出そうとしていたが、それは主な方法の外にあったので、私はそれをコメントした。しかし、私はまだ出力を得ていません。 – bkagodwin

0

ご理解のとおり、GPAを正しく計算する既存のコードを修正しました。
私のコードでは、学年に関連するクレジット時間を考慮しています。
例えば、あなたは1つのクレジット時間を持っているコースでBを取得し、5つのクレジット時間を持つコースでBを得たとします。あなたが撮影してきたどのように多くのコース
したがって、あなたのGPAが(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
B
あなたのコース番号のクレジット時間を入力します:1あなたは
を入力しましたあなたのコース番号のためのクレジット時間:2あなたはB
総合的なGPA = 3.1666666666666665

を得ました
関連する問題