Как кодировать программу, которая находит целые числа в командной строке и присваивает их вектору? - PullRequest
0 голосов
/ 13 апреля 2019

Моя цель состоит в том, чтобы ввести несколько чисел и слов в командную строку и заставить мою программу отделять целые числа от слов, назначая их вектору и выдавая «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

Метод преобразования говорит, что целое число в порядке - 11

Метод преобразования говорит, что целое число в порядке - 22 * ​​1010 *

Блок Catch говорит, что аргумент "hat" игнорируется, потому что hat

Метод преобразования говорит, что целое число в порядке - 99

Метод преобразования говорит, что целое число в порядке - 88

Блок Catch говорит, чтоаргумент «лягушка» игнорируется, потому что лягушка

в методе преобразования указано целое число ОК - 77

Векторное содержимое:

Элемент 0 равен 11

Элемент 122

Элемент 2 - 99

Элемент 3 - 88

Элемент 4 - 77

Элемент 5 - 67

1 Ответ

0 голосов
/ 13 апреля 2019

Спасибо, что включили ваш исходный код.

Вы печатаете значения вплоть до длины заданных аргументов, но числа, которые вы собираете, равны только длине 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 );
...