Java 检查a、b、c侧的直角是否有效。但不能使用循环、条件、数组或更高级的功能
我有整数a,b和c 有效直角表示所有边都是正整数,它们构成有效的直角三角形 然后我必须输出结果(简单) 完整免责声明: 我的尝试(Java):Java 检查a、b、c侧的直角是否有效。但不能使用循环、条件、数组或更高级的功能,java,Java,我有整数a,b和c 有效直角表示所有边都是正整数,它们构成有效的直角三角形 然后我必须输出结果(简单) 完整免责声明: 我的尝试(Java): 最小的边是a、b和c中的最小边;最大边是a、b和c中的最大边;另一边是a、b和c之和减去最小一边和最大一边。然后,我们需要做的就是检查最小边是否大于0,最小边的平方加上中间边的平方是否等于最大边的平方 final int smallest = Math.min(a, Math.min(b, c)); final int largest = Math.ma
最小的边是
a
、b
和c
中的最小边;最大边是a
、b
和c
中的最大边;另一边是a
、b
和c
之和减去最小一边和最大一边。然后,我们需要做的就是检查最小边是否大于0,最小边的平方加上中间边的平方是否等于最大边的平方
final int smallest = Math.min(a, Math.min(b, c));
final int largest = Math.max(a, Math.max(b, c));
final int middle = a + b + c - smallest - largest;
System.out.println(smallest > 0 && smallest * smallest + middle * middle == largest * largest);
根据问题的性质,如果用户输入了负数,则使用
assert
更有意义:
assert a > 0 && b > 0 && c > 0: "Sides can not be negative";
此外,还可以使用位运算符提取整数的符号:
// sign is 1 if i is zero, 0 if it is negative, 2 if it is positive
int sign = 1 + (i >> 31) - (-i >> 31);
检查否定性:
boolean minbool=Collections.min(Arrays.asList(a,b,C))<0代码>然后如何处理结果?实际上,我不能使用if-else块使用三元:System.out.println(minbool?“false”:“true”)代码>@thibscSystem.out.println(!minbool)代码>就足够了。@hev1,有效,不是完全清醒;)检查最小值>0就足够了为什么我没想到呢?我会的,谢谢你。将编辑我的帖子
// sign is 1 if i is zero, 0 if it is negative, 2 if it is positive
int sign = 1 + (i >> 31) - (-i >> 31);