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

相关问题