当赋值给NumberFormatException错误时,如何防止向量扩展?

时间:2019-04-14 23:01:22

标签: java vector command try-catch

我在命令行中插入值...输入的整数将被插入到我的向量中,并且诸如“ dog”之类的字符串将被NumberFormatException捕获。但是,在我的代码中,我收到了ArrayIndexOutOfBoundsException ...我知道为什么,但是如何防止这种情况发生?

我希望我的代码打印出矢量接受整数,但拒绝字符串,并继续在命令行中读取我的输入。

我面临的其他问题...如何得到导致字符串打印的错误?当我只想“ dog”时,我的代码给我“用于输入字符串:“ dog””

    int i;
    int result;

    Vector numbers = new Vector();
    for (i = 0; i < args.length; i++) {
        try {
            result = Integer.parseInt(args[i]);
        System.out.println("Converter method says integer OK - " + result);
            numbers.add(i, result);
        } catch (NumberFormatException e) {
            System.out.println("Catch block says the argument" + e.getMessage() + "is ignored because" + e.getMessage());

        }
    }

示例输入:11 22 33狗44猫55 66

**

我的输出:

转换器方法显示整数OK-11

转换器方法显示整数OK-22

转换器方法显示整数OK-33

Catch块表示参数对于输入字符串:“ cat”被忽略,因为对于输入字符串:“ cat”

转换器方法显示整数OK-44

线程“ main”中的异常java.lang.ArrayIndexOutOfBoundsException:4> 3

at java.base/java.util.Vector.insertElementAt(Vector.java:619)

at java.base/java.util.Vector.add(Vector.java:857)

at exceptionalcommandline.ExceptionalCommandLine.main(ExceptionalCommandLine.java:16)

**

预期输出:

转换器方法显示整数OK-11

转换器方法显示整数OK-22

转换器方法显示整数OK-33

Catch块表示参数“ cat”被忽略,因为“ cat”

转换器方法显示整数OK-44

catch块说参数“ dog”被忽略,因为“ dog”

转换器方法显示整数OK-55

转换器方法显示整数OK-66

1 个答案:

答案 0 :(得分:0)

即使您遇到例外,我的价值仍然会增加。因此,在异常之后,可用索引与您要添加的i值之间将存在间隙。因此,将代码更改为:

for (i = 0; i < args.length; i++) {
    try {
        result = Integer.parseInt(args[i]);
        System.out.println("Converter method says integer OK - " + result);
        numbers.add(result);
    } catch (NumberFormatException e) {
        System.out.println("Catch block says the argument" + e.getMessage() + "is ignored because" + e.getMessage());
    }
}