如何修改构造函数以支持用户输入斜边长度而不是两条直角边?
时间: 2024-10-28 21:15:22 浏览: 16
如果你想让 `RTriangle` 类支持用户通过输入斜边长度构建直角三角形,你需要先计算出另外一条直角边的长度。这可以通过勾股定理完成,即 `c^2 = a^2 + b^2`,其中 `c` 是斜边长度,`a` 和 `b` 是直角边。一旦得到了另一条直角边,就可以像以前那样创建一个新的 `RTriangle` 实例了。以下是修改后的构造函数:
```java
public class RTriangle implements IShape {
private double sideA; // 直角边 A 或者斜边,根据输入的不同而变化
private double sideB;
// 支持输入斜边长度的情况
public RTriangle(double c) {
if (c <= 0) {
throw new IllegalArgumentException("Side length must be positive.");
}
// 计算直角边之一
sideA = Math.sqrt(c * c / 2);
sideB = Math.sqrt(c * c - sideA * sideA);
}
// 其他构造函数(如果需要保留之前的版本)
public RTriangle(double a, double b) {
this(a); // 如果只传入一个直角边,可以先转换为斜边再创建
sideB = b;
}
// ...其他方法
}
```
现在,用户可以直接输入斜边长度 `c`,例如:
```java
double c = input.nextDouble();
IShape rTriangle = new RTriangle(c);
```
阅读全文