Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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计算结果问题 GPA计算器_Java_Eclipse_Double_Calculator - Fatal编程技术网

Java GPA计算结果问题 GPA计算器

Java GPA计算结果问题 GPA计算器,java,eclipse,double,calculator,Java,Eclipse,Double,Calculator,我知道也有类似的线索,但我所看到的都没有遇到我遇到的问题。我没有收到任何错误,但我的最终答案始终为0,而不是实际的GPA值。任何帮助都将不胜感激注意:我是Java新手,这是我读了几个小时Java之后的第一个正式项目 public static void main (String[]args){ double total = 0,total2=0, total3=0, total4=0, total5=0, total6=0; double classes=0; dou

我知道也有类似的线索,但我所看到的都没有遇到我遇到的问题。我没有收到任何错误,但我的最终答案始终为0,而不是实际的GPA值。任何帮助都将不胜感激注意:我是Java新手,这是我读了几个小时Java之后的第一个正式项目

public static void main (String[]args){


    double total = 0,total2=0, total3=0, total4=0, total5=0, total6=0;
    double classes=0;
    double answer=0;
    String grade1,grade2,grade3,grade4,grade5,grade6;
    int p1, p2, p3, p4, p5, p6;



System.out.println("Welcome to the Gpa Calc");
System.out.println("Please enter a grade for every class you have.");
System.out.println("Shall we begin?");
System.out.println("How many classes do you have?");
    Scanner c = new Scanner(System.in);
    classes= c.nextInt();

    Scanner grade = new Scanner(System.in);
    System.out.println("What is your Grade in your first period class?");
    grade1 = grade.nextLine();
    if(grade1 == "A" || grade1 =="a"){
         p1 = 4;
         total+=p1;
    }
    else if(grade1 == "B" || grade1 =="b"){
        p1= 3;
        total+= p1;
    }
    else if(grade1 == "C" || grade1 =="c"){
        p1= 2;
        total+= p1;
    }
    else if(grade1 == "D" || grade1 =="d"){
        p1= 1;
        total += p1;
    }
    else if(grade1 == "F" || grade1 =="f"){
        p1= 0;
        total += p1;
    }   

    System.out.println("What is your Grade in your second period class?");
    grade2 = grade.nextLine();

    if(grade2 == "A" || grade2 =="a"){
         p2 = 4;
         total2 += p2;
    }
    else if(grade2 == "B" || grade2 =="b"){
         p2 = 3;
         total2 += p2;
    }
    else if(grade2 == "C" || grade2 =="c"){
         p2 = 2;
         total2 += p2;
    }
    else if(grade2 == "D" || grade2 =="d"){
         p2 = 1;
         total2 += p2;
    }
    else if(grade2 == "F" || grade2 =="f"){
         p2 = 0;
         total2 += p2;
    }   

    System.out.println("What is your Grade in your third period class?");
    grade3 = grade.nextLine();

    if(grade3 == "A" || grade3 =="a"){
         p3 = 4;
         total3 += p3;
    }
    else if(grade3 == "B" || grade3 =="b"){
         p3 = 3;
         total3 += p3;
    }
    else if(grade3 == "C" || grade3 =="c"){
         p3 = 2;
         total3 += p3;
    }
    else if(grade3 == "D" || grade3 =="d"){
         p3 = 1;
         total3 += p3;
    }
    else if(grade3 == "F" || grade3 =="f"){
         p3 = 0;
         total3 += p3;
    }   

    System.out.println("What is your Grade in your fourth period class?");
    grade4 = grade.nextLine();

    if(grade4 == "A" || grade4 =="a"){
         p4 = 4;
         total4 += p4;
    }
    else if(grade4 == "B" || grade4 =="b"){
         p4 = 3;
         total4 += p4;
    }
    else if(grade4 == "C" || grade4 =="c"){
         p4 = 2;
         total4 += p4;
    }
    else if(grade4 == "D" || grade4 =="d"){
         p4 = 1;
         total4 += p4;
    }
    else if(grade4 == "F" || grade4 =="f"){
         p4 = 0;
         total4 += p4;
    }   

    System.out.println("What is your Grade in your fifth period class?");
    grade5 = grade.nextLine();

    if(grade5 == "A" || grade5 =="a"){
         p5 = 4;
         total5 += p5;
    }
    else if(grade5 == "B" || grade5 =="b"){
         p5 = 3;
         total5 += p5;
    }
    else if(grade5 == "C" || grade5 =="c"){
         p5 = 2;
         total5 += p5;
    }
    else if(grade5 == "D" || grade5 =="d"){
         p5 = 1;
         total5 += p5;
    }
    else if(grade5 == "F" || grade5 =="f"){
         p5 = 0;
         total5 += p5;
    }   
    System.out.println("What is your Grade in your sixth period class?");
    grade6 = grade.nextLine();

    if(grade6 == "A" || grade6 =="a"){
         p6 = 4;
         total6 += p6;
    }
    else if(grade6 == "B" || grade6 =="b"){
         p6 = 3;
         total6 += p6;
    }
    else if(grade6 == "C" || grade6 =="c"){
         p6 = 2;
         total6 += p6;
    }
    else if(grade6 == "D" || grade6 =="d"){
         p6 = 1;
         total6 += p6;
    }
    else if(grade6 == "F" || grade6 =="f"){
         p6 = 0;
         total6 += p6;
    }   


    answer = total + total2 + total3 + total4 + total5 + total6 ;
    double GPA = answer/classes;
    System.out.println("Your current unweighed GPA is " +GPA);

您需要使用grade1.isEquals(“A”)来比较字符串。grade1==“A”比较对象标识,因为它们是不同的对象,所以该标识将为false。你也可以考虑去除长的IF链,而不是:

answer += grade1.toLowerCase().indexOf("fdcba"); // returns the zero based index 0-4 for f-a

它更简洁一点。

现在发生的事情是,由于您使用的是
=
,所以没有任何条件得到满足。这在比较int时很好,但是字符串有点不同。基本上,检查数据的位置是否相同。您需要改用
equals()
,因为它检查数据的值是否相同。比如说

if(grade1.equals("A") || grade1.equals("a")){
     p1 = 4;
     total+=p1;
}

有一些很好的答案描述了
=
等于
之间的区别

因为您使用单个字符进行比较,所以可以用以下代码替换比较代码:

  char grade1 = grade.nextLine().charAt(0);
       if(grade11 == 'A' || grade11 =='a'){
            // 
        }

注意:还要尽量使代码模块化。创建一个接受成绩参数并返回gpa的方法,然后获得所有重复代码

如果您这样做,“Awesome”、“Bob”、“Carl”、“Dumbass”和“Failure”现在都是有效的成绩。感谢所有到目前为止发表评论的人!你不知道这对我来说有多沮丧,因为我是Java新手!显然,我的问题与使用
=
而不是
equals
有关。因为你们大家,我进一步加深了对Java的了解。谢谢@兰迪·卡姆拉特高级酒店