Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算gpa返回错误_Java - Fatal编程技术网

Java 计算gpa返回错误

Java 计算gpa返回错误,java,Java,伙计们,我需要一个快速的帮助来完成我的任务。我试着调试这段代码,我不知道我是怎么得到这个错误的,但当我试图计算gpa时,它给我发送的是0,而不是来自开关的值。 如果用户按下A键并输入4,则需要返回4*4,但对于字母A,我收到0 public class Gpa{ private int sumOfCredits; private int sumOfPoints; private int points = 0; public Gpa(){ sumO

伙计们,我需要一个快速的帮助来完成我的任务。我试着调试这段代码,我不知道我是怎么得到这个错误的,但当我试图计算gpa时,它给我发送的是0,而不是来自开关的值。 如果用户按下A键并输入4,则需要返回4*4,但对于字母A,我收到0

public class Gpa{
    private int sumOfCredits;
    private int sumOfPoints;
    private int points = 0;

    public Gpa(){
        sumOfPoints=0;
        sumOfCredits=0;
    }

    public static int calcPoints(String grade) {
        int points = 0;
        switch (grade) {
            case "A":
                points = 4;
                break;
            case "B":
                points = 3;
                break;
            case "C":
                points = 2;
                break;
            case "D":
                points = 1;
                break;
            case "F":
                points = 0;
                break;
            case "a":
                points = 4;
                break;
            case "b":
                points = 3;
                break;
            case "c":
                points = 2;
                break;
            case "d":
                points = 1;
                break;
            case "f":
                points = 0;
                break;
            default:
                points = -1;
        }
        return points;
    }

    public int getSumOfCredits(){
        return sumOfCredits;
    }

    public int getSumOfPoints(){
        return sumOfPoints;
    }

    public void addToTotals(String grade,int credits){
        sumOfCredits =+  credits;
        calcPoints(grade);
     sumOfPoints =sumOfPoints + points * credits;
    }

    public double calcGPA(){
        double gpa = sumOfPoints /sumOfCredits;
        return gpa;
    }
}
这是我的测试课程:

import java.util.*;

public class ComputeGpa {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        Gpa gpaC = new Gpa();

        for (int i = 1; i <= 3; i++) {
            System.out.printf("Enter grade (one character): ");
            String grade = scan.next();
            System.out.printf("Enter credits: ");
            int credits = scan.nextInt();
            gpaC.addToTotals(grade, credits);
            System.out.printf("Sum Points: %d", gpaC.getSumOfPoints());
            System.out.printf("\tSum Credits: %d\n", gpaC.getSumOfCredits());
        }
        System.out.printf("GPA: %.2f", gpaC.calcGPA());
    }
}
import java.util.*;
公共类计算机{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
Gpa gpaC=新Gpa();
对于(int i=1;i
是java中的整数除法,将返回一个整数值。很可能它始终是一个介于0和1之间的值,在转换为整数后,该值将等于0。请查看是否将其转换为双精度

double gpa = (double)sumOfPoints / (double)sumOfCredits;
您还在此处重新定义每个循环上的点:

    public static int calcPoints(String grade) {
    int points = 0;
    switch (grade) {
这意味着,您不是在更改全局变量
而是在更改局部变量
。因此,您需要删除该局部变量点,使其使用全局变量点,也不需要返回任何内容,因此只需使用void:

public void calcPoints(String grade) {
     switch (grade) {
       //cont

在calcGPA()方法中,当您要进行浮点除法时,您正在进行整数除法。您必须将sumOfPoints变量或sumOfCredits转换为double。

请在上查看这篇有用的文章,然后(认真地)获得它.
sumOfPoints=++points*credits;
?多次使用
=++
看起来你并没有在IDE中运行你的代码。@cricket\u 007
=++
编译。就像
=++++++++
一样。但是,这可能与OP有关:它们并不意味着“增量”
sumOfCredits=+credits
相当于
sumOfCredits=credits
。要增加,您需要
sumOfCredits+=credits
否,它仍然是0@ZeroOne请查看我所做的编辑,问题在于您的points变量的范围。进行这些更改后,它将正常工作。我在您发表评论之前发现了这一点。谢谢好吧,如果我早知道这会节省我2个小时的时间来修复这个代码。@ ZooOne没有问题,通常是简单的。如果它帮助你修复它,就把它标记为被接受的答案。
public void calcPoints(String grade) {
     switch (grade) {
       //cont