如何编写在其命令行中找到整数并将它们分配给向量的程序?

问题描述 投票:-1回答:1

我的目标是在命令行中键入几个数字和单词,并让我的程序通过将它们分配给向量来将单词与单词分开,并为输入的单词赋予“NumberFormatException”。最后,我想显示我的矢量值。

当我的命令行只包含整数“12 44 55 ...等”时,代码完美无缺,但是当我在“猫帽狗”中添加单词时,它会给我一个错误并结束我的程序。

    Vector numbers = new Vector();
    for (i = 0; i < args.length; i++) {
        try {
            result = Integer.valueOf(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());
        }
    }
    System.out.println();
    System.out.println("Vector contents are:");
    for (i = 0; i < args.length; i++) {
        System.out.println("Item " + i + " is " + numbers.get(i));
    }
}

对于命令行输入:11 22 hat 99 88 frog 77

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

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

Catch块表示因为帽子而忽略了“hat”这个参数

转换器方法表示整数OK - 99

转换器方法表示整数OK - 88

Catch block说因为青蛙而忽略了“青蛙”这个论点

转换器方法表示整数OK - 77

矢量内容是:

项目0是11

第1项是22

第2项是99

第3项是88

第4项是77

第5项是67

java arrays object try-catch
1个回答
0
投票

感谢您提供源代码。

您打印的值最多为给定参数的长度,但您收集的数字仅等于numbers的长度。

for (i = 0; i < ((( args.length ))); i++) {  // wrong
    System.out.println("Item " + i + " is " + numbers.get(i));
}

改成

for (i = 0; i < numbers.size(); i++) {
    System.out.println("Item " + i + " is " + numbers.get(i));
}

或者只使用内置打印,它会为您列出数组列表值

 System.out.println( numbers );
© www.soinside.com 2019 - 2024. All rights reserved.