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)
你忘了初始化grade.这NullPointerException是告诉你grade的null.唯一的例外是抛出的第一次尝试使用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.