- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是作业。我已经完成了 90%,但是 NPE 导致我的程序每次都失败。我已经尝试了几种方法并阅读了关于他希望程序如何构建的非常详细的说明,但我仍然无法弄清楚为什么即使在传递数据时它也会出现此异常。我最初认为这是因为数据未在初始测试中通过。
程序运行的第一个 .java 文件:
class TestGPA
{
public static void main(String[] args)
{
if (args.length == 0)
{
System.out.println("Please supply grades to find GPA");
System.exit(0);
}
GPA gpa = new GPA(args);
else
{
GPA gpa = new GPA(args);
gpa.displayResult();
}
}
}
第二个 .java 文件,其中包含许多方法:
class GPA
{
String[] courseIdGrades;
String[] courseIds;
char[] grades;
double gpa;
String errorMsg;
GPA(String[] courseIdGrades)
{
String[] courseIds = new String[courseIdGrades.length];
char[] grades = new char[courseIdGrades.length];
processData();
}
void parseInput()
{
int i = 0;
while( i < courseIdGrades.length )
{
GPAUtil.validateCourseIdGrade(courseIdGrades[i]);
if(errorMsg != "NO_ERROR")
{
break;
}
else
{
courseIds[i] = courseIdGrades[i].substring(0,5).toUpperCase();
grades[i] = Character.toUpperCase(courseIdGrades[i].charAt(5));
i++;
}
}
}
double computeGPA()
{
int sum = 0;
for (int i = 0; i < grades.length; i++)
{
sum += GPAUtil.gradePoints(grades[i]);
}
double gpa = (double) sum / grades.length;
return gpa;
}
void processData()
{
parseInput();
if(errorMsg == "NO_ERROR")
{
computeGPA();
}
else
{
System.out.println("Input error - details are: " + errorMsg);
System.exit(0);
}
}
void displayResult()
{
System.out.println("--------------------");
System.out.println(" Course ID Grade" );
System.out.println("--------------------");
for (int i = 0; i < courseIds.length; i++)
{
System.out.println(" " + courseIds[i] + " " + grades[i]);
}
System.out.println("--------------------");
System.out.println(" GPA = " + gpa);
System.out.println("--------------------");
}
}
第三个 .java 是一个实用类:
public class GPAUtil
{
public static String[] validDepts = {"CS","EE","ME"};
public static String validateCourseIdGrade(String courseIdGrade)
{
String errorMsg = "NO_ERROR";
if (courseIdGrade.length() != 6)
{
errorMsg = "Course ID/Grade string invalid, must be 6 char.";
}
else
{
for(int i = 0; i < 3; i++)
{
if(courseIdGrade.substring(0,2).equalsIgnoreCase(validDepts[i]))
{
errorMsg = "NO_ERROR";
break;
}
else
{
errorMsg = "Dept ID invalid, must be one of: CS, EE, ME";
}
}
}
return errorMsg;
}
static int gradePoints(char 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;
default:
points = 0;
break;
}
return points;
}
}
异常(exception):
Exception in thread "main" java.lang.NullPointerException
at GPA.parseInput(GPA.java:19)
at GPA.processData(GPA.java:48)
at GPA.<init>(GPA.java:13)
at TestGPA.main(TestGPA.java:5)
根据错误消息,问题出现在 GPA 类中的这一行:while( i < courseIdGrades.length )
这让我相信,通过不传递参数,它解析为 null,因此没有长度,所以我添加了一个 null 检查。但是,当我传递参数时,我仍然会收到相同的错误集。我不是在寻求答案,但在正确的方向上轻推会非常有帮助。
我尝试重组代码以阅读 while(i < courseIdGrades[i].length())
无济于事并且还硬编码了一个参数并开始传递它但仍然得到相同的待遇。应该发生的是,如果传递了无效参数,它应该显示:Input error - details are: + errorMsg
由 errorMsg
给出变量位于 GPAUtil
.
最佳答案
您永远不会初始化 courseIdGrades
。您仅在 GPA
构造函数中初始化 courseIds
和 grades
。这就是为什么在引用对象时出现异常的原因。
关于java - 空指针异常 - GPA HH 的 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158953/
void fillQueueWithStudents(Queue *q) { int counter = 1; char answer = 'Y'; //this signifies th
我在 JSP 上做了一个项目,通过 MySQL 数据库根据分数计算 GPA(平均绩点)。这是我的公式: sb=con.prepareStatement("select round((((score)/
为了更详细地说明我正在处理的问题,确切的任务是: 编写一个程序,计算平均值、最小值、最大值和 所有学生的平均 GPA。首先,你的程序会读入学生记录 (姓名和 GPA)并确定文件中学生记录的数量。毕竟
我可以制作一个表格来显示每个部门的 GPA,但我不知道如何让它只显示 GPA 最高的部门。 我的查询是: SELECT avg(grade) as GPA, deptID from tblStuden
package gpatogradecalculator; import java.util.Scanner; public class GPAtoGradeCalculator { publ
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
到目前为止,这是我的代码(已更新): import java.util.Scanner; public class gpa { public static void main(String[]
这里是 Java 初学者。所以我对如何制作它感到困惑,所以如果用户输入是“A+”,我将得到 4.0 并且不会更高?类似地,对于“F”,我想让 F、F-、F+ 的结果都是 0.0 gpa。我想要么为字母
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我的主类中有这段代码。我的问题是,GPA 是用总分除以类(class)来计算的。它没有给我完整的号码。 EX,如果总数为 14,类(class)为 4,则为 3.5,我的代码只给我 3.0。有谁知道为
所以这段代码的整个目标是计算一个学期的 GPA。它要求用户提供学期名称(即 2014 年秋季)、类(class)名称、学分和成绩。它将这些信息列出到一个文本文件中,并计算 GPA。 我似乎不知道如何做
我无法找出我的程序的问题,非常感谢任何帮助!不幸的是,我是一名初学者程序员......当我运行该程序时,它会正确要求类(class)数量、学分和成绩,但它会忽略输入的学分,只给出字母成绩的正常值。最后
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
这个问题已经有答案了: How do I compare strings in Java? (23 个回答) 已关闭 8 年前。 GPA计算器 我知道那里有类似的线程,但我见过的没有一个遇到我遇到的问
我想根据成绩和学分计算每个学生的 GPA。我已经执行了这样的事情 SET GPA=(SELECT((t.grade*c.credits)/c.credits) FROM Student s, Take
我在连接这个表格上的表格以获得单一结果时遇到了一些问题。计算 GPA 的方法如下: 获取每门类(class)的平均成绩。 将每个平均值乘以该类(class)的学分数。 添加 2 的结果。 将结果除以
我正在尝试创建一个表单,要求用户输入姓名、GPA 和电话号码。我需要帮助来验证 GPA 是否为 0 到 4 之间的数字,包括成绩后最多两位小数。我不知道从哪里开始!
我是 JavaScript 初学者。在这里,我无法弄清楚为什么我的代码没有读取我输入的值,尽管我找不到代码中的任何错误。有什么有用的建议来编辑我的代码以修复错误吗? function gpacalc(
出于某种原因,我的程序在计算 GPA 平均值时出错。如果我输入 4.0 3 次,那么它说平均 GPA 是 3.0 但应该是 4.0。有人可以帮我找到问题吗? //variables double gp
家庭作业问题。我需要遍历一系列字典以获得最高的 gpa 并打印学生的名字和姓氏。我在访问字典条目的 gpa 字段时遇到问题。 // Task 6 var highestGPA = 0.0 var st
我是一名优秀的程序员,十分优秀!