给定三个整数a、b和c,如果a、b和c可以是直角三角形的边的长度,则返回true。否则返回false。回想一下,在直角三角形中,每条边的长度必须是正数,边长的平方和必须等于斜边长度的平方。
isRightTriangle(3,4,5) true isRightTriangle(4,3,5)→true isRightTriangle(5,4,3)→true
boolean isRightTriangle(int a, int b, int c) {
if(a>0 && b>0 && c>0){
if((Math.sqrt((double)a)+Math.sqrt((double)b))==Math.sqrt((double)c)){
return true;
}
else{
if((Math.sqrt((double)b)+Math.sqrt((double)c))==Math.sqrt((double)a)){
return true;
}
else{
if((Math.sqrt(c)+Math.sqrt(b))==Math.sqrt(a)){
return true;
}
else{
return false;
}
}
}
}
else{
return false;
}
}
发布于 2019-10-07 19:55:08
您正在使用Math.sqrt而不是Math.pow(x,2)。您需要检查a^2+b^2=c^2,而不是sqrt(a)+sqrt(b)=sqrt(c)。
boolean isRightTriangle(int a, int b, int c) {
// lets exit if variables are bad
if(a < 1 || b < 1 || c < 1) {
return false;
}
// lets create an array so we can sort
int[] arry = new int[3];
arry[0] = a;
arry[1] = b;
arry[2] = c;
Arrays.sort(arry);
// now that the array is sorted, the largest number (the hypotenuse) should be arry[2]
return Math.pow(arry[0], 2) + Math.pow(arry[1], 2) == Math.pow(arry[2], 2);
}
https://stackoverflow.com/questions/58275767
复制