だから私は、2つの辺のスペースで区切られた入力と三角形のhypotenuseを要求するこのコードを持っています。mainの下のメソッドは、三角形が正しい場合はtrueを返し、そうでない場合はfalseを返すことになっています。
何らかの理由で、入力した測定値が直角三角形であることがわかっていても、三角形は直角三角形ではないことが印刷されます。
私はしばらくの間このコードの論理エラーを検出しようとしてきましたが、comeoneは私を助け/呼び出すことができますか?
import java.util.Scanner;
public class VerifyRightTriangle {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Please enter the two sides and the hypotenuse: ");
String input = sc.nextLine();
String[] values = input.split(" ");
int[] nums = new int[values.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(values[i]);
}
double s1 = nums[0];
double s2 = nums[1];
double hyp = nums[2];
System.out.printf("Side 1: %.2f Side 2: %.2f Hypotenuse: %.2f\n", s1, s2, hyp);
boolean result = isRightTriangle(s1, s2, hyp);
if (result == true) {
System.out.println("The given triangle is a right triangle.");
} else if (result == false) {
System.out.println("The given triangle is not a right triangle.");
}
}
/**
* Determine if the triangle is a right triangle or not, given the shorter side, the longer
* side, and the hypotenuse (in that order), using the Pythagorean theorem.
* @param s1 the shorter side of the triangle
* @param s2 the longer side of the triangle
* @param hyp the hypotenuse of the triangle
* @return true if triangle is right, false if not
*/
private static boolean isRightTriangle(double s1, double s2, double hyp) {
double leftSide = s1 * s1 + s2 * s2;
double rightSide = hyp * hyp;
if (Math.sqrt(leftSide) == Math.sqrt(rightSide)) {
return true;
} else {
return false;
}
}
}