这是我的方法,显示两个数字是否相等。我拥有的最后一个if语句是如果所有数字都相同但是当我运行它时,它会打印“两个并列第二”和“全部并列第一”。如果所有数字都相同,我怎么做到这一点,它只会输出“全部并列第一”?
public static void overlap(double a, double b, double c){
if (a==b) {
System.out.println("Two tied for second");
}
if (c==b) {
System.out.println("Two tied for second");
}
if (c==a) {
System.out.println("Two tied for second");
}
if(a==b && b==c && a==c) {
System.out.println("All tied for first");
}
}
答案 0 :(得分:2)
这样会更清洁。
public static void overlap(double a, double b, double c) {
if (a == b && b == c && a == c) {
System.out.println("All tied for first");
}
else if (a == b || c == b || c == a) {
System.out.println("Two tied for second");
}
}
答案 1 :(得分:1)
尝试使用else if
。
另外,将最后一个条件放在第一个:
if(a==b && b==c && a==c) {
System.out.println("All tied for first");
}
else if (a==b) {
System.out.println("Two tied for second");
}
else if (c==b) {
System.out.println("Two tied for second");
}
else if (c==a) {
System.out.println("Two tied for second");
}
答案 2 :(得分:0)
在转到其他条件语句之前,将该语句放在开头。并确保使用if
和if else
语句。
答案 3 :(得分:0)
像其他帖子所说的那样,使用else也是一个好主意,但要记住的是当它遇到其他人的条件时,它就不会再进一步了。所以,如果它发现a == b,它就不会再进一步检查c == b或c == a
怎么样?
currentUser.get_title()
答案 4 :(得分:0)
你有两个问题。
第一个是'if'语句的评估顺序。 听起来你想先评估最后一个。
第二个问题是你想要打印匹配的第一个'if'语句的结果,并跳过其余的。
有很多方法可以做到这一点。 一种流行的方法是使用if / else if语句链,但我发现它的可读性低于我喜欢的。所以我使用以下有点非标准的方法:
do {
if(a==b && b==c && a==c) {
System.out.println("All tied for first");
break;
}
if (a==b) {
System.out.println("Two tied for second");
break;
}
if (c==b) {
System.out.println("Two tied for second");
break;
}
if (c==a) {
System.out.println("Two tied for second");
break;
}
} while(false);
答案 5 :(得分:0)
您的代码的问题在于它独立评估每个if
语句。因此,如果您未能指定else
语句,则无论语句的顺序如何,每个if
语句将在执行时被执行TRUE
。
与Moishe一样(可能更直观地用于您的目的),您也可以按如下方式构建代码:
public static void overlap(double a, double b, double c){
if(a==b && b==c && a==c) {
System.out.println("All tied for first");
}
}
else {
if (a==b) {
System.out.println("Two tied for second");
}
if (c==b) {
System.out.println("Two tied for second");
}
if (c==a) {
System.out.println("Two tied for second");
}
}
}
但是,如果您想要简化一些事情,可以考虑重组一些事情以防止过度比较:
public static void overlap(double a, double b, double c){
if (a==b) {
if(b==c && a==c) {
System.out.println("All tied for first");
}
else {
System.out.println("Two tied for second");
}
}
else if (c==b) {
System.out.println("Two tied for second");
}
else if (c==a) {
System.out.println("Two tied for second");
}
}