2015-07-19 2 views
-2

У меня возникла проблема с моим методом getGPA(), она вернет только значение 0.00. Мне нужна функция для вычисления GPA, разделив totalgradepoints на число классов. Я пробовал все и понятия не имею, в чем проблема. Я полный новичок и стараюсь учиться, поскольку я иду, это для присвоения класса, так что это то, чему нас проинструктировал наш профессор. Я ценю любые советы по этому поводу, спасибо всем.Частная двойная вычислительная ошибка

import java.util.Scanner; 
import java.text.DecimalFormat; 

public class StudentGPAInfo { 
    static DecimalFormat f = new DecimalFormat ("0.00"); 
    private double gpa; 
    private int totalgradepoints; 
    private int numberofclasses; 
    private String studentname; 

    public StudentGPAInfo() { 
     gpa = 0; 
     totalgradepoints = 0; 
     numberofclasses = 0; 
     studentname = null; 

    } 

    public void setName(String studentID){ 
     studentname = studentID; 

    } 

    public void addClass(int classes, String gradepoint){ 
     numberofclasses = numberofclasses += classes; 
      if (gradepoint.equalsIgnoreCase("A")) { 
       totalgradepoints += 4; 
      } else if (gradepoint.equalsIgnoreCase("B")) { 
       totalgradepoints += 3; 
      } else if (gradepoint.equalsIgnoreCase("C")) { 
       totalgradepoints += 2; 
      } else if (gradepoint.equalsIgnoreCase("D")) { 
       totalgradepoints += 1; 
      } else if (!gradepoint.equalsIgnoreCase("F")) { 
       System.err.println("Invalid input: " + gradepoint); 

      } 


    }  



    public String getName(){ 

     return studentname; 
    } 

    public double getGPA(){ 

    gpa = totalgradepoints/numberofclasses; 

    return gpa; 
    } 

    public void displayStudent(){ 
     System.out.println("Student Name: " + studentname); 
     System.out.println("Total Grade Points: " + totalgradepoints); 
     System.out.println("Number of Class Credits: " + numberofclasses); 
     System.out.println(studentname + " Your GPA Average is: " + f.format(gpa)); 
    } 

} 

public class GPAtest { 
    static Scanner input = new Scanner (System.in); 
    public static void main(String[] args) { 
    String sName; 
    String grade; 
    int sClass; 
    String aClass; 
    StudentGPAInfo student = new StudentGPAInfo(); 

    System.out.print("Please Enter Student Name: "); 
    sName = input.nextLine(); 
    student.setName(sName); 
    do { 
     System.out.print("Please Enter Class credits: "); 
     sClass = Integer.parseInt(input.nextLine()); 
     System.out.print("Please Enter Letter Grade: ");  
     grade = input.nextLine(); 
     System.out.print("Another Class? "); 
     aClass = input.nextLine(); 
     student.addClass(sClass, grade); 
     } 
    while (aClass.equalsIgnoreCase("y")); 
     student.displayStudent(); 



    } 
} 
+0

Google Java ИНТ подразделение. 'gpa = (double) totalgradepoints/numberofclasses;' –

ответ

0

Пожалуйста, прочитайте, как работает целочисленное деление. если числитель меньше знаменателя, результат равен нулю. Сделайте числитель двойным путем литья.

Изменить это:

gpa = totalgradepoints/numberofclasses; 

к этому:

gpa = (double) totalgradepoints/numberofclasses; 
Смежные вопросы