Определение типа элемента в массиве String

231
24 ноября 2017, 06:44

Есть массив:

String[][] a = new String[][]{{"55", "java", "40"}, {"ex", "5", "100"};

Не могу сообразить как в цикле определить какой элемент является числом, а какой нет. Т.е. к примеру у меня есть задача: посчитать все элементы массива которые являются числом, а у меня естественно каждый раз доходя до back вылетает в ошибку NumberFormatException.

Answer 1

Вариант 1(медленный):

Обрабатывать исключение и просто не суммировать в случае ошибки.

int sum = 0;
...
try {
    sum += Integer.parseInt( input );
}
catch( Exception e ) {
}

Вариант 2(написать свою функцию проверки строки на число):

public static boolean isInteger(String str) {
     if (str == null) {
        return false;
    }
    int length = str.length();
    if (length == 0) {
        return false;
    }
    int i = 0;
    if (str.charAt(0) == '-') {
        if (length == 1) {
            return false;
        }
        i = 1;
    }
    for (; i < length; i++) {
        char c = str.charAt(i);
        if (c < '0' || c > '9') {
             return false;
        }
    }
    return true;
}

и вызывать эту функцию перед каждым числом. На больших объемах данных такой подход может дать прирост в пару десятков раз.

Ответ основан на ответе с английского SO

READ ALSO
Перевод десятичной дроби в обычную Java

Перевод десятичной дроби в обычную Java

Нужна функция которая принимает float и возвращает string в виде дроби 1/3 и тому подобные

213
java сохранение mp4 [требует правки]

java сохранение mp4 [требует правки]

Здравствуйте, посоветуйте статью с примерами создания видео из изображений при помощи Java Media Framework

404
Вернуть статус сервера

Вернуть статус сервера

Как при обращении клиента к серверу вернуть ему статус сервера 200? Используется sparkНашел что можно сделать как то response

212
Java 8 stream map to new Objects

Java 8 stream map to new Objects

Как можно замапить стрим в новые объекты? Или, эти примеры что не равнозначны?

269