Java编写整除运算程序,要求捕获除数为0异常、数字格式异常、通用型异常。注意要把通用型异常的捕获顺序放在最后。把整除程序改为双精度型实数的除法运算程序,并更改有关提示信息.编写自定义异常类(必须继承系统的Exception类),在除数为0时抛出自定义异常,并捕获处理该异常。
时间: 2024-03-11 12:43:32 浏览: 155
好的,我可以帮你解决这个问题。
首先,我们来实现 Java 整除运算程序:
```java
import java.util.Scanner;
public class Divide {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("请输入被除数:");
int dividend = scanner.nextInt();
System.out.print("请输入除数:");
int divisor = scanner.nextInt();
int quotient = dividend / divisor;
System.out.println("商为:" + quotient);
} catch (ArithmeticException e) {
System.out.println("除数不能为0!");
} catch (NumberFormatException e) {
System.out.println("请输入整数!");
} catch (Exception e) {
System.out.println("发生了异常!");
}
}
}
```
在这个程序中,我们使用了 try-catch 块来捕获三种异常:除数为0异常、数字格式异常和通用型异常。其中,ArithmeticException 表示除数为0异常,NumberFormatException 表示数字格式异常,Exception 则表示通用型异常。
接下来,我们将整除运算程序改为双精度型实数的除法运算程序,并更改有关提示信息:
```java
import java.util.Scanner;
public class Divide {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("请输入被除数:");
double dividend = scanner.nextDouble();
System.out.print("请输入除数:");
double divisor = scanner.nextDouble();
double quotient = dividend / divisor;
System.out.println("商为:" + quotient);
} catch (ArithmeticException e) {
System.out.println("除数不能为0!");
} catch (NumberFormatException e) {
System.out.println("请输入数字!");
} catch (Exception e) {
System.out.println("发生了异常!");
}
}
}
```
在这个程序中,我们将数据类型从 int 改为 double,并且将有关提示信息更改为更加合适的文本。
最后,我们来实现自定义异常类:
```java
public class DivideByZeroException extends Exception {
public DivideByZeroException() {
super("除数不能为0!");
}
}
```
在这个类中,我们继承了系统的 Exception 类,并重写了构造方法。在构造方法中,我们使用 super() 方法调用了 Exception 类的构造方法,并传入了自定义的异常信息。
接下来,我们修改整除运算程序,使用自定义异常类来捕获除数为0异常:
```java
import java.util.Scanner;
public class Divide {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("请输入被除数:");
double dividend = scanner.nextDouble();
System.out.print("请输入除数:");
double divisor = scanner.nextDouble();
if (divisor == 0) {
throw new DivideByZeroException();
}
double quotient = dividend / divisor;
System.out.println("商为:" + quotient);
} catch (NumberFormatException e) {
System.out.println("请输入数字!");
} catch (DivideByZeroException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println("发生了异常!");
}
}
}
```
在这个程序中,我们在除数为0时使用 throw 关键字抛出了自定义的异常类 DivideByZeroException,并在 catch 块中捕获了这个异常。注意,我们将这个 catch 块放在了最前面,因为自定义异常类是继承自 Exception 类的,所以它也是 Exception 类的子类,如果不把它放在最前面,它就不会被捕获到。
好的,以上就是 Java 编写整除运算程序,并捕获除数为0异常、数字格式异常和通用型异常以及自定义异常类的详细解答。
阅读全文