编写应用程序EcmDef.java,接收命令行的两个参数,要求不能输入负数,计算两数相除。 对 数 据 类 型 不 一 致 (NumberFormatException) 、 缺 少 命 令 行 参 数 (ArrayIndexOutOfBoundsException、 除0(ArithmeticException)及输入负数(EcDef 自定义的异常)进行异常处理。 提示: (1)在主类(EcmDef)中定义异常方法(ecm)完成两数相除功能。 (2)在main()方法中使用异常处理语句进行异常处理。 (3)在程序中,自定义对应输入负数的异常类(EcDef)。 (4)运行时接受参数 java EcmDef 20 10 //args[0]=“20” args[1]=“10” (5)Interger类的static方法parseInt(String s)将s转换成对应的int值。 如:int a=Interger.parseInt(“314”); //a=314;
EcDef.java
package com.company;
import java.io.IOException;
public class EcDef extends Exception {
private int num1;
private int num2;
public int getNum1() {
return num1;
}
public int getNum2() {
return num2;
}
public EcDef(){
}
public EcDef(String message, int num1, int num2){
super(message);
this.num1 = num1;
this.num2 = num2;
}
public void regist(int num1, int num2) throws EcDef{
if (num1 < 0 || num2 < 0){
throw new EcDef("两数之中存在负数!", num1, num2);
}else {
System.out.println("数字输入正确!");
}
}
public void manager(int num1,int num2) {
try {
regist(num1, num2);
} catch (EcDef e) {
System.out.print("存在负数!" + e.getNum1() + " " + e.getNum2());
}
System.out.print("本次登记操作结束");
}
public double ecm(int num1, int num2){
return num1 / num2;
}
}
Main.java
package com.company;
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[2];
try {
System.out.print("请输入第一个数字:");
arr[0] = Integer.parseInt(scanner.nextLine());
System.out.print("请输入第二个数字:");
arr[1] = Integer.parseInt(scanner.nextLine());
EcDef def = new EcDef();
def.manager(arr[0], arr[1]);
System.out.println( def.ecm(arr[0],arr[1]) );
}catch (NumberFormatException e1){
System.out.print("数据类型不一致," + e1.getStackTrace());;
}catch(ArrayIndexOutOfBoundsException e2){
System.out.println("缺少命令行参数," + e2.getStackTrace());
}catch (ArithmeticException e4){
System.out.println("运算条件异常," + e4.getMessage() + e4.getStackTrace());
} finally {
System.out.println("666");
}
}
}
|