编写应用程序,从命令行输入两个小数参数,求它们的商,要求程序中捕获NumberFormatException异常和ArithmeticException异常
时间: 2024-10-05 18:01:23 浏览: 25
Java异常处理程序实验
当你编写这样的应用程序时,可以按照以下步骤来设计:
1. **获取用户输入**:
首先,你需要通过`Scanner`类从命令行获取两个小数作为参数。例如:
```java
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个小数:");
try {
double num1 = scanner.nextDouble();
double num2 = scanner.nextDouble();
} catch (InputMismatchException e) {
// 输入不是数字处理异常
}
```
2. **捕获异常**:
- `NumberFormatException`: 如果用户输入的是非数字字符,如字母或特殊符号,`nextDouble()`会抛出这个异常。在这种情况下,你可以用一个try-catch块捕获并处理它,通常提示用户重新输入正确的数值。
```java
if (!scanner.hasNextDouble()) {
throw new NumberFormatException("输入无效,请输入一个小数。");
}
```
- `ArithmeticException`: 这个异常通常是除数为零时发生的。为了避免这种情况,你需要在计算之前检查第二个数字是否为零。
```java
if (num2 == 0) {
throw new ArithmeticException("除数不能为零。");
}
```
3. **计算商并输出结果**:
计算完两个数的商之后,你可以打印出来。如果一切正常,就直接计算;如果有异常,跳过计算。
4. **完整的代码示例**:
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个小数:");
try {
double num1 = scanner.nextDouble();
double num2 = scanner.nextDouble();
if (num2 == 0) {
throw new ArithmeticException("除数不能为零。");
}
double result = num1 / num2;
System.out.println("两数相除的结果是:" + result);
} catch (NumberFormatException e) {
System.out.println(e.getMessage());
// 重新开始获取输入
scanner.next(); // 清空错误的输入
main(args); // 递归调用自身处理异常
} catch (ArithmeticException e) {
System.out.println(e.getMessage());
} finally {
scanner.close();
}
}
```
阅读全文