java实现对数字的判断,要求若输入的数字为负数或小数都不能计算其平方根。计算方法通过throws将异常抛出。请自定义异常类:NoPositiveNumber(不是正数)和Decimal(小数)实现该程序。
时间: 2024-09-25 09:09:25 浏览: 21
平方根_java计算平方根_
在Java中,我们可以定义两个自定义异常类NoPositiveNumber和Decimal,并利用try-catch-finally结构来实现输入验证和异常处理。下面是一个示例程序:
```java
// 自定义异常类
class NoPositiveNumber extends Exception {
public NoPositiveNumber(String message) {
super(message);
}
}
class Decimal extends Exception {
public Decimal(String message) {
super(message);
}
}
public class SquareRootCalculator {
// 计算平方根的方法,带有throws关键字,用于抛出异常
public double calculateSquareRoot(double number) throws NoPositiveNumber, Decimal {
if (number < 0) {
throw new NoPositiveNumber("输入的数字不能为负数");
}
else if (Double.isInfinite(number) || Double.isNaN(number)) {
throw new Decimal("输入的数字不能是无穷大或非数字");
}
else {
return Math.sqrt(number);
}
}
}
public class Main {
public static void main(String[] args) {
try {
SquareRootCalculator calculator = new SquareRootCalculator();
double sqrt = calculator.calculateSquareRoot(-5); // 这里会抛出NoPositiveNumber异常
// sqrt = calculator.calculateSquareRoot(2.7); // 这里会抛出Decimal异常
} catch (NoPositiveNumber e) {
System.out.println("发生 " + e.getClass().getName() + ": " + e.getMessage());
} catch (Decimal e) {
System.out.println("发生 " + e.getClass().getName() + ": " + e.getMessage());
} finally {
System.out.println("程序执行完毕");
}
}
}
```
在这个程序中,`calculateSquareRoot`方法会检查输入的数字,如果是负数或有理数(如浮点数的小数部分),则抛出相应的自定义异常。在主程序中,我们捕获了这两个异常并打印出它们的类型和消息。无论是否发生异常,都会在finally块中输出"程序执行完毕"。
阅读全文