我正在为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/