源程序文件Average.java,包含两个类: (1)自定义异常类NotPositiveException,继承自Exception。在该类中只定义了无参构造方法,该构造方法调用父类的带参构造方法,把异常信息设置为“参数不是正整数”。 (2)应用程序类Average,它用于求从命令行输入的若干个正整数平均值的整数部分。程序能够捕获ArithmeticException(当忘记在命令行输入参数时)、NumberFormatException(当输入的参数不是整数时)、NotPositiveException(当输入的参数是负整数或零时),如果有其它异常也能使程序正常结束不被中断(提示:捕获Exception异常)。程序中用整型变量来作累加和,所作的运算也是整除运算。 下面是在各种情况下程序的运行效果: (a) 在命令行输入若干个正整数,将输出这些正整数平均值的整数部分: (b) 在命令行忘记输入参数: (c) 在命令行输入的参数不是整数: (d) 在命令行输入的参数是负整数或零: 填写程序,以完成上述要求。 class NotPositiveException { public NotPositiveException() { ("参数不是正整数"); } } public class Average { public static void main(String[] args) { int k = 0, s = 0; try { for (int i=0; i<args.length; i++) { k = Integer.parseInt(); if () { NotPositiveException(); } s += k; } System.out.println("参数的平均值是:" + s/args.length); } catch (ArithmeticException e) { System.out.println(); } catch (NumberFormatException e) { System.out.println(); } catch (NotPositiveException e) { System.out.println(e.); } catch (Exception e) { System.out.println(e.toString()); } System.out.println("程序结束!") } }
时间: 2024-01-31 21:02:34 浏览: 77
首先,需要在NotPositiveException类中添加父类的带参构造方法的调用语句,将异常信息传递给父类。
```
class NotPositiveException extends Exception {
public NotPositiveException() {
super("参数不是正整数");
}
}
```
在应用程序类Average中,需要补全代码,具体如下:
```
public class Average {
public static void main(String[] args) {
int k = 0, s = 0;
try {
if (args.length == 0) {
throw new ArithmeticException("命令行参数为空");
}
for (int i=0; i<args.length; i++) {
k = Integer.parseInt(args[i]);
if (k <= 0) {
throw new NotPositiveException();
}
s += k;
}
System.out.println("参数的平均值是:" + s/args.length);
} catch (ArithmeticException e) {
System.out.println("错误:忘记在命令行输入参数!");
} catch (NumberFormatException e) {
System.out.println("错误:命令行输入的参数不是整数!");
} catch (NotPositiveException e) {
System.out.println("错误:命令行输入的参数是负整数或零!");
} catch (Exception e) {
System.out.println("未知错误:" + e.toString());
}
System.out.println("程序结束!");
}
}
```
在try块中,首先判断命令行参数是否为空,如果为空,则抛出异常并给出错误提示。在循环中,将字符串类型的参数转换成整型,并判断是否为正整数,如果不是,则抛出自定义的异常NotPositiveException,并给出错误提示。
在catch块中,分别捕获ArithmeticException、NumberFormatException、NotPositiveException和Exception异常,并给出相应的错误提示。最后,无论是否发生异常,都会输出“程序结束!”。
阅读全文