我正在为Jetbrains创建的以下任务苦苦挣扎:


  给定三个自然数A,B,C。确定是否存在具有这些边的三角形。
  如果存在三角形,则输出YES字符串,否则输出NO。
  如果三角形的两边之和大于第三边,则该三角形有效。如果三个边分别是A,B和C,则应满足三个条件。
  
  
  A + B> C
  A + C> B
  B + C> A
  


样本输入1:

3
4
5


样本输出1:

YES


现在,我的代码如下:

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        // put your code here

        Scanner scanner = new Scanner(System.in);

        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int c = scanner.nextInt();

        boolean aCheck = b + c > a;
        boolean bCheck = a + c > b;
        boolean cCheck = a + b > c;

       if (aCheck || bCheck || cCheck) {
           System.out.println("YES");
       } else {
           System.out.println("NO");
       }
    }
}


从逻辑上讲,一切似乎都正确,但是我在Input上遇到错误

1个
2
3

我真的不确定我可能错过了什么。我的代码不正确吗?

最佳答案

如果aCheck为true,则代码if (aCheck || bCheck || cCheck)通过,因为它基于OR运算符,要使三角形可行,您需要通过所有检查。您应该使用AND运算符:

if (aCheck && bCheck && cCheck)


这是@sleepToken在评论中提出的,但是,如果使用&&而不是&,则一旦某些检查为假,它将失败。

关于java - Java:条件语句和关系运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60616765/

10-16 12:45