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