我在命令行中插入值..。输入的整数将被插入到我的向量中,NumberFormatException将捕获诸如"dog“等字符串。但是,在我的代码中,我收到了一个ArrayIndexOutOfBoundsException.我明白为什么,但我怎样才能阻止这一切呢?
我希望我的代码打印出向量接受整数,但它拒绝字符串,并继续在命令行中读取我的输入。
我面临的额外问题.如何获得导致字符串打印的错误??当我只想要“狗”时,我的代码给我输入字符串:“狗”
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块表示argumentFor输入字符串:"cat“被忽略,becauseFor输入字符串:”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 block说参数"cat“被忽略,因为"cat”
转换器方法表示整型OK - 44
Catch block说“狗”这个论点被忽略了,因为“狗”
转换器方法表示整型OK - 55
转换器方法表示整型OK - 66
发布于 2019-04-14 23:13:43
即使你得到了一个例外,我的价值仍然会增加。因此,在异常之后,可用索引与要添加的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());
}
}https://stackoverflow.com/questions/55680797
复制相似问题