2.从控制台输入三个数值,判断这三个数值是否能构成一个三角形。程序要实现以下功能: 检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生InputMismatchException异常(需要导入java.util.InputMismatchException这个类) 检查输入的命令行参数中是否有负数或0,如果有负数或0,则程序可能产生NumberValueException异常(NumberValueExcception为自定义异常) 检查输入的三个数值是否能构成一个三角形,如果不能构成一个三角形,则程序可能产生TriangleException异常(TriangleException为自定义异常) 没出现异常则显示这三个数字可以构成一个三角形 提示:三角形任意两边之和必须大于第三边
时间: 2024-03-10 10:49:20 浏览: 41
好的,这是一个Java程序,可以这样写:
```java
import java.util.InputMismatchException;
class NumberValueException extends Exception {
public NumberValueException(String msg) {
super(msg);
}
}
class TriangleException extends Exception {
public TriangleException(String msg) {
super(msg);
}
}
public class Triangle {
public static void main(String[] args) {
try {
if (args.length != 3) {
System.out.println("请输入三个数值");
return;
}
double a = Double.parseDouble(args[0]);
double b = Double.parseDouble(args[1]);
double c = Double.parseDouble(args[2]);
if (a <= 0 || b <= 0 || c <= 0) {
throw new NumberValueException("输入的数值必须是正数");
}
if (a + b <= c || a + c <= b || b + c <= a) {
throw new TriangleException("这三个数值不能构成一个三角形");
}
System.out.println("这三个数字可以构成一个三角形");
} catch (InputMismatchException e) {
System.out.println("输入的命令行参数必须是数值格式");
} catch (NumberFormatException e) {
System.out.println("输入的命令行参数必须是数值格式");
} catch (NumberValueException e) {
System.out.println(e.getMessage());
} catch (TriangleException e) {
System.out.println(e.getMessage());
}
}
}
```
程序中定义了两个自定义异常类:`NumberValueException`和`TriangleException`,分别用于表示输入的数值不合法和三个数值不能构成一个三角形的情况。
在`main`方法中,首先检查命令行参数的数量是否为3,如果不是则提示用户输入三个数值。
然后使用`Double.parseDouble`方法将命令行参数转换为`double`类型的数值,并检查是否为正数,如果不是则抛出`NumberValueException`异常。
最后检查三个数值是否能构成一个三角形,如果不能则抛出`TriangleException`异常。
如果程序没有抛出任何异常,则输出"这三个数字可以构成一个三角形"。如果抛出了异常,则根据异常的类型输出相应的错误信息。