我一直在这个问题上花了很长时间,并希望从我的if else语句中获得更多。所有代码都会起作用,直到学生的GPA和/或SAT成绩较低,但恰好是一个庞大的班级的告别演说者。我知道它闻所未闻,但如果不符合该学生资格,我的代码对我来说是不正确的。
我的第一篇文章。 谢谢你的任何建议 布赖恩
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("\n\tStudent Qualifier");
System.out.println("Enter students GPA: ");
double gpa = in.nextDouble();
System.out.println("Enter students SAT score: ");
double sat = in.nextDouble();
System.out.println("\nIf student was valedictorin or salutatorian of a school of 1400 or more, Enter y or n");
String highestHonors = in.next();
in.close();
if (gpa >= 4.0 && sat >= 1100)
studentQualified();
if (gpa >= 3.5 && sat >= 1300)
studentQualified();
if (gpa >= 3.0 && sat >= 1500)
studentQualified();
if (highestHonors == "y")
studentQualified();
else
unQualified();
}
public static void studentQualified() {
System.out.println("Student is qualified");
}
public static void unQualified() {
System.out.println("Student is not qualified");
}
}
答案 0 :(得分:2)
您需要使用equals()
来比较字符串,而不是==
。 ==
将检查字符串是否完全相同(即占用内存中的相同空间),而equals()
仅检查字符是否相同。
这样的事情应该有效:
if ("y".equals(highestHonors))
编辑:此外,即使您认为不需要花括号,也请使用花括号。它使代码看起来更好,并在有人想要添加另一个分支时防止错误。
答案 1 :(得分:2)
您可以使用||
来组合测试。不要使用==
进行比较String
(s) - 您可以使用String#equalsIgnoreCase(String)
。另外,我强烈建议您始终将{}
与if-else
(s)一起使用。像,
if ((gpa >= 4.0 && sat >= 1100) || (gpa >= 3.5 && sat >= 1300) ||
(gpa >= 3.0 && sat >= 1500) || highestHonors.equalsIgnoreCase("y")) {
studentQualified();
} else {
unQualified();
}