Java字符串输入比较

时间:2013-11-23 09:29:17

标签: 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失败

* /

5 个答案:

答案 0 :(得分:4)

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

由于"a"grade.toLowerCase()是对象(类型String),因此比较它们==会比较对象的引用,而不是字符串的内容。

使用equals()方法。

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

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

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

答案 1 :(得分:0)

除了Suresh Atta的回答,我建议您使用下面显示的方法来比较String

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

原因是,它可以保护您免受NullPointerException的攻击。<​​/ p>

答案 2 :(得分:0)

使用==的Java中的对象比较是通过对象引用而不是通过内容进行的。使用equals()equalsIgnoreCase()来比较字符串,具体取决于您的需求。

答案 3 :(得分:0)

你除以零。

忽略代码的一部分,你基本上是这样做的:

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

当你的while循环结束时,积分将是&lt; = 0。

答案 4 :(得分:0)

正如其他几位已经指出的那样,您必须使用equals()代替==来比较字符串。

为了使代码更紧凑和可读,您还可以使用switch语句:

switch (grade.toLowerCase()) {

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

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

    /* etc. */

}