如何修复我的方法输出一个答案?

时间:2015-10-21 01:51:13

标签: java

这是我的方法,显示两个数字是否相等。我拥有的最后一个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");
       }
 }

6 个答案:

答案 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)

在转到其他条件语句之前,将该语句放在开头。并确保使用ifif 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");
       }
}