Есть массив:
String[][] a = new String[][]{{"55", "java", "40"}, {"ex", "5", "100"};
Не могу сообразить как в цикле определить какой элемент является числом, а какой нет.
Т.е. к примеру у меня есть задача: посчитать все элементы массива которые являются числом, а у меня естественно каждый раз доходя до back вылетает в ошибку NumberFormatException.
Вариант 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
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники