2016-11-17 3 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.
В моем коде учитываются кредитные часы, связанные с оценкой.
Скажите, например, что вы получили 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
B
Введите зачетные часы для номера курса: 1, где вы получили
Enter кредитных часов для вашего номера курса: 2, где вы получили B
Общий GPA = 3.1666666666666665

Смежные вопросы