2016-10-29 6 views
1

私は重み付けされていないGPA電卓をプログラムしようとしていますが、いくつかの問題が出てきました。私の重み付けされていないGPA電卓に関する問題

import java.util.Scanner; 

public class GPA 
{ 
    public static void main(String[] args) 
    { 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("How many classes are you taking?"); 
    int classes = keyboard.nextInt(); 
    keyboard.nextLine(); 
    int class1 = 0; 
    int gpa = 0; 

    for (int x = 0; x < classes; x++) 
    { 
     class1++; 
     System.out.println("What is your grade for class number " + class1); 
     String classGrade = keyboard.nextLine(); 
     if (classGrade == "A" || classGrade == "a") 
     { 
     gpa += 4; 
     } 
     if (classGrade == "b" || classGrade == "B") 
     { 
      gpa += 3; 
     } 
     if (classGrade == "C" || classGrade == "c") 
     { 
      gpa+= 2; 
     } 
     if (classGrade == "D" || classGrade == "d") 
     { 
      gpa += 1; 
     } 
     if (classGrade == "F" || classGrade == "f") 
     { 
      gpa += 0; 
     } 
    } 
    double calculatedGpa = gpa/classes; 
    System.out.println("Your gpa is " + calculatedGpa); 
    } 
} 

出力が特定のポイントで正しく機能します。それは私にクラスの数を聞いて、各クラスの成績を尋ねます。しかし、最終的にGPAは毎回0.0と出力されます。私はまだかなりJavaに新しいです。私のコードに何が間違っているのか尋ねてもいいですか?

答えて

1

Stringを比較すると問題が発生します。

かわり==equalsを使用する必要があります。

if ("A".equals(classGrade) || "a".equals(classGrade)) 
    { 
     gpa += 4; 
    } 
    ... 

私はclassGradeがnullの場合NullPointerExceptionを避けるためにclassGrade前に定数を置きます。

How do I compare strings in Java?を参照してください。

+1

さらに良い点として、ifごとに2つの条件の代わりに "A" .equalsIgnoreCase(classGrade)を使用し、すべてのブランチが相互排他的であることを伝えるために "else if" – Wolf

関連する問題