初学java,帮我修复程序?

Tom*_*Tom 1 java arrays java.util.scanner

我正在尝试为大学gpa制作一个计算器.如果陈述只说每个字母等级是什么,我就把所有这些都剪掉了.我修复了我的第一个程序,让任何人再次看到这个.该程序现在可以工作,但无论我在gpa中键入的字母,它返回的是2.0.如果有人看到任何错误,将再次非常感谢.谢谢

import java.util.Scanner;

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

        int classes = 4;
        int units[] = {3, 2, 4, 4};
        double[] grade = new double[4];
        double[] value= new double[4];
        int counter = 0;
        double total = 0;
        double gpa;
        String letter;


        while(classes > counter){
            Scanner gradeObject = new Scanner(System.in);
             letter = gradeObject.next();

            if(letter.equalsIgnoreCase("A+") || letter.equalsIgnoreCase("A")){
                grade[counter] = 4;
            }
            if(letter.equalsIgnoreCase("F")){
                grade[counter] = 0;
            }

            value[counter] = grade[counter] * units[counter];
            counter++;
        }

        for(int i = 0; i < classes; i++  ){
            total += value[i];
        }

        gpa = total/classes;
        System.out.println("You gpa is " +gpa);
    }
}
Run Code Online (Sandbox Code Playgroud)

Joe*_*get 8

你忘了初始化grade.这NullPointerException是告诉你gradenull.唯一的例外是抛出的第一次尝试使用grade,在statment grade[counter] = 4;.根据需要分配尽可能多的空间new.


小智 5

等级的初始化可以动态地静态完成:

double []grade = new double[4];
Run Code Online (Sandbox Code Playgroud)

要么

double []grade = new double[classes];
Run Code Online (Sandbox Code Playgroud)

也做同样的事情value.