2013-11-23 128 views
0

找出來。多謝你們。我知道它不是一個完美的答案,但我是新來的Java。Java字符串輸入比較

包Dr._Coles_Practice_Problems;

import java.util.Scanner;

公共類GpaCalc {

public static void main(String[] args) { 

    // Needed variables 

    double credits = 0.0; 

    double totalcredits = 0.0; 

    double grade = 0.0; 

    double qualitypoints = 0; 

    int classes; 

    String lettergrade; 

    Scanner input = new Scanner(System.in); 

    System.out.println("Enter the amount of classes for this semester"); 

    classes = input.nextInt(); 

    while (classes > 0) { 

    System.out.println("Enter the amount of credits for this class"); 

    credits = input.nextDouble(); 

    System.out.println("Enter the grade achieved for this class"); 

    lettergrade = input.next(); 

     if (lettergrade.equalsIgnoreCase("a")) { 

      grade += 4.00; 

     } 

     if (lettergrade.equalsIgnoreCase("a-")) { 

      grade += 3.67; 

     } 

     if (lettergrade.equalsIgnoreCase("b+")) { 

      grade += 3.33; 

     } 

     if (lettergrade.equalsIgnoreCase("b")) { 

      grade += 3.00; 

     } 

     if (lettergrade.equalsIgnoreCase("b-")) { 

      grade += 2.67; 

     } 

     if (lettergrade.equalsIgnoreCase("c+")) { 

      grade += 2.33; 

     } 

     if (lettergrade.equalsIgnoreCase("c")) { 

      grade += 2.00; 

     } 

     if (lettergrade.equalsIgnoreCase("c-")) { 

      grade += 1.67; 

     } 

     if (lettergrade.equalsIgnoreCase("d+")) { 

      grade += 1.33; 

     } 

     if (lettergrade.equalsIgnoreCase("d")) { 

      grade += 1.00; 

     } 

     if (lettergrade.equalsIgnoreCase("f")) { 

      grade += 0.00; 

     } 

     classes--; 

     totalcredits += credits; 

    }  

    qualitypoints = grade * credits; 

    // GPA is calculated via total credits/total quality points 
    //of which are calculated by multiplying the credit(s) * the quality point value 


    System.out.println("Your total credit(s)are: " + totalcredits); 

    System.out.println("Your total quality points are: " + qualitypoints); 

    System.out.println("Your GPA is: " + (qualitypoints/totalcredits)); 
} 

}

/*

布魯斯堡大學的等級水平

A = 4.00高人

A- = 3.67

B + = 3.33

B = 3.00以上的平均素養

B- = 2.67

C + = 2.33

C = 2.00平均素養

C- = 1.67

D + = 1.33

d = 1.00最小到達

F = 0.00故障

*/

+2

僅供參考,在未來,如果你說的是不對的(編譯錯誤,運行時錯誤,這將有助於,輸出不正確等) –

+0

我只是在做自動更正對我說的話。低於15個徽章...編輯您的帖子,否則等待6個小時發佈它的最終版本。 – Espryon

回答

4
if (grade.toLowerCase() == "a") { 

由於"a"grade.toLowerCase()是對象(String類型的),將它們進行比較王氏==比較對象的引用,而不是String的內容。使用equals()方法。

if (grade.toLowerCase().equals("a")) { 

更多使用方法equalsIgnoreCase忽略此案。

if (grade.equalsIgnoreCase("a")) { 
0

除了蘇雷什阿塔的答案,我會建議你使用如下圖所示,比較String方法:

"a".equals(grade){ 
    // something 
} 

的原因是,它可以保護你免受NullPointerException秒。

0

使用==的Java中的對象比較依賴於對象引用,而不是內容。根據您的需要,使用equals()equalsIgnoreCase()來比較字符串。

0

您除以零。

忽略你的代碼的一部分,你基本上是這樣:

while (credits/3 > 0) { 
    credits = credits - 3; 
} 
grades/credits; 

當while循環結束,學分會< = 0。

0

正如其他人已經指出的,您必須使用equals()而不是==來比較字符串。

爲了使你的代碼更緊湊和可讀性,你也可以使用switch語句:

switch (grade.toLowerCase()) { 

    case "a": 
     grades += 4.00; 
     break; 

    case "a-": 
     grades += 3.67; 
     break; 

    /* etc. */ 

}