这道题目要求我们输入两个数据(可通过Java应用程序命令行参数输入),或者通过GUI界面输入,然后计算它们的和,并将结果显示出来。编程时需要自定义两个异常,只允许有一个参数的情况(OnlyOneException),和无参情况(NoOperandException)。如果参数数量不足,则应显示相应的提示信息并退出程序执行。
时间: 2024-03-20 12:41:26 浏览: 16
好的,以下是一个示例程序,可以满足您的要求:
```java
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Calculator {
public static void main(String[] args) {
try {
double num1, num2, sum;
if (args.length == 2) {
num1 = Double.parseDouble(args[0]);
num2 = Double.parseDouble(args[1]);
} else {
String input = JOptionPane.showInputDialog("请输入两个数字,用空格隔开:");
String[] inputArr = input.split(" ");
if (inputArr.length != 2) {
throw new NoOperandException("请输入两个数字!");
}
num1 = Double.parseDouble(inputArr[0]);
num2 = Double.parseDouble(inputArr[1]);
}
sum = num1 + num2;
JOptionPane.showMessageDialog(null, "计算结果是:" + sum);
} catch (OnlyOneException | NoOperandException e) {
System.out.println(e.getMessage());
} catch (NumberFormatException e) {
System.out.println("输入的不是数字!");
}
}
}
class OnlyOneException extends Exception {
public OnlyOneException(String message) {
super(message);
}
}
class NoOperandException extends Exception {
public NoOperandException(String message) {
super(message);
}
}
```
该程序首先检查命令行参数的数量,如果有两个参数,则将它们转换为double类型的数字。如果没有两个参数,则通过GUI界面提示用户输入两个数字,并将它们转换为double类型的数字。如果输入的数字不是两个,则抛出NoOperandException异常。在计算和之前,程序还使用Double.parseDouble()方法将输入的字符串转换为double类型的数字。如果输入不是数字,则抛出NumberFormatException异常。如果计算成功,则将结果显示在GUI对话框中。同时,程序还包含两个自定义异常类,分别用于处理OnlyOneException和NoOperandException异常。如果发生异常,则会在命令行中显示相应的错误消息。
阅读全文