想出来。多谢你们。我知道它不是一个完美的答案,但我是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失败
* /
答案 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. */
}