java编程 2.从控制台输入三个数值,判断这三个数值是否能构成一个三角形。程序要实现以下功能: 检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生InputMismatchException异常(需要导入java.util.InputMismatchException这个类) 检查输入的命令行参数中是否有负数或0,如果有负数或0,则程序可能产生NumberValueException异常(NumberValueExcception为自定义异常) 检查输入的三个数值是否能构成一个三角形,如果不能构成一个三角形,则程序可能产生TriangleException异常(TriangleException为自定义异常) 没出现异常则显示这三个数字可以构成一个三角形 提示:三角形任意两边之和必须大于第三边
时间: 2024-03-18 20:40:39 浏览: 117
好的,让我来帮你解决这个问题!首先,我们需要定义一个自定义异常类 NumberValueException,代码如下:
```
public class NumberValueException extends Exception {
public NumberValueException(String message) {
super(message);
}
}
```
然后,我们需要编写一个方法来检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则抛出 InputMismatchException 异常。代码如下:
```
private static void checkNumberFormat(String[] args) throws InputMismatchException {
for (int i = 0; i < args.length; i++) {
try {
Double.parseDouble(args[i]);
} catch (NumberFormatException e) {
throw new InputMismatchException("输入的第" + (i + 1) + "个数值格式错误!");
}
}
}
```
接着,我们需要编写一个方法来检查输入的命令行参数中是否有负数或0,如果有负数或0,则抛出 NumberValueException 异常。代码如下:
```
private static void checkNumberValue(String[] args) throws NumberValueException {
for (int i = 0; i < args.length; i++) {
double num = Double.parseDouble(args[i]);
if (num <= 0) {
throw new NumberValueException("输入的第" + (i + 1) + "个数值必须为正整数!");
}
}
}
```
最后,我们需要编写一个方法来检查输入的三个数值是否能构成一个三角形,如果不能构成一个三角形,则抛出 TriangleException 异常。代码如下:
```
private static void checkTriangle(double a, double b, double c) throws TriangleException {
if (a + b <= c || a + c <= b || b + c <= a) {
throw new TriangleException("输入的三个数值不能构成一个三角形!");
}
}
```
完整的程序代码如下:
```
import java.util.InputMismatchException;
public class TriangleTest {
public static void main(String[] args) {
try {
checkNumberFormat(args);
checkNumberValue(args);
double a = Double.parseDouble(args[0]);
double b = Double.parseDouble(args[1]);
double c = Double.parseDouble(args[2]);
checkTriangle(a, b, c);
System.out.println("输入的三个数字可以构成一个三角形!");
} catch (InputMismatchException | NumberValueException | TriangleException e) {
System.out.println(e.getMessage());
}
}
private static void checkNumberFormat(String[] args) throws InputMismatchException {
for (int i = 0; i < args.length; i++) {
try {
Double.parseDouble(args[i]);
} catch (NumberFormatException e) {
throw new InputMismatchException("输入的第" + (i + 1) + "个数值格式错误!");
}
}
}
private static void checkNumberValue(String[] args) throws NumberValueException {
for (int i = 0; i < args.length; i++) {
double num = Double.parseDouble(args[i]);
if (num <= 0) {
throw new NumberValueException("输入的第" + (i + 1) + "个数值必须为正整数!");
}
}
}
private static void checkTriangle(double a, double b, double c) throws TriangleException {
if (a + b <= c || a + c <= b || b + c <= a) {
throw new TriangleException("输入的三个数值不能构成一个三角形!");
}
}
}
class NumberValueException extends Exception {
public NumberValueException(String message) {
super(message);
}
}
class TriangleException extends Exception {
public TriangleException(String message) {
super(message);
}
}
```
希望对你有所帮助!
阅读全文