Java:条件语句和关系运算符

问题描述 投票:0回答:2

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

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

  1. A + B> C
  2. A + C> B
  3. 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");
       }
    }
}

从逻辑上讲,一切似乎都正确,但是输入时出现错误

123

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

java
2个回答
2
投票

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

if (aCheck && bCheck && cCheck)

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


0
投票

将条件更改为如果(aCheck && bCheck && cCheck){}

© www.soinside.com 2019 - 2024. All rights reserved.