读入两个数据(Java Aplication命令行参数输入、或通过GUI输入),并计算它们的和,然后将和显示输出。编程自定义异常OnlyOneException(只有一个参数)与NoOprandException(无参数)。如果参数的数目不足,显示相应提示信息并退出程序的执行。
时间: 2023-12-03 09:46:11 浏览: 105
JavaWeb:j2ee web aplication 与 Servlets 通信的 map api 和 mysql 项目
以下是一个基于命令行参数输入的 Java 示例代码:
```java
public class Calculator {
public static void main(String[] args) {
try {
if (args.length != 2) {
throw new IllegalArgumentException("必须输入两个参数");
}
double num1 = Double.parseDouble(args[0]);
double num2 = Double.parseDouble(args[1]);
double sum = num1 + num2;
System.out.println("和为:" + sum);
} catch (NumberFormatException e) {
System.out.println("参数必须是数字");
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
在上面的代码中,我们首先判断输入参数的个数是否为2,如果不是则抛出 `IllegalArgumentException` 异常。然后将输入的参数转换为 `double` 类型并计算它们的和。如果输入的参数不是数字,则抛出 `NumberFormatException` 异常。如果抛出任何异常,程序将输出相应的错误信息。
接下来,我们定义 `OnlyOneException` 和 `NoOperandException` 两个自定义异常类:
```java
public class OnlyOneException extends Exception {
public OnlyOneException(String message) {
super(message);
}
}
public class NoOperandException extends Exception {
public NoOperandException(String message) {
super(message);
}
}
```
`OnlyOneException` 表示只有一个参数的异常,`NoOperandException` 表示没有参数的异常。这两个异常类都继承了 `Exception` 类,因此它们都是可检查异常,需要在方法签名中声明或在方法内部捕获。
现在,我们可以使用这两个自定义异常类来修改我们的代码:
```java
public class Calculator {
public static void main(String[] args) {
try {
switch (args.length) {
case 0:
throw new NoOperandException("缺少参数");
case 1:
throw new OnlyOneException("只有一个参数");
case 2:
double num1 = Double.parseDouble(args[0]);
double num2 = Double.parseDouble(args[1]);
double sum = num1 + num2;
System.out.println("和为:" + sum);
break;
default:
throw new IllegalArgumentException("超出参数数量限制");
}
} catch (NumberFormatException e) {
System.out.println("参数必须是数字");
} catch (OnlyOneException | NoOperandException | IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
```
现在,我们使用 `switch` 语句根据参数的数量来判断程序应该如何执行。如果没有参数,则抛出 `NoOperandException` 异常;如果只有一个参数,则抛出 `OnlyOneException` 异常;如果有两个参数,则计算它们的和并输出结果;如果参数数量超过2个,则抛出 `IllegalArgumentException` 异常。注意,在 `catch` 语句中,我们使用了多重捕获来捕获不同类型的异常。最后,如果抛出异常,则输出相应的错误信息。
阅读全文