我想从我的if else声明中获得更多

时间:2017-07-20 04:27:03

标签: java

我一直在这个问题上花了很长时间,并希望从我的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");
}

}

2 个答案:

答案 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();
}