Есть ли у java int.tryparse, который не генерирует исключение для плохих данных?

Возможный дубликат:
Java: хороший способ инкапсулировать Integer.parseInt ()
как преобразовать строку в float и избежать использования try / catch в java?

C # имеет Int.TryParse: метод Int32.TryParse (String, Int32%)

Самое замечательное в этом методе заключается в том, что он не генерирует исключение для плохих данных.

В java Integer.parseInt("abc") генерирует исключение, и в случаях, когда это может произойти, пострадает большая производительность.

Есть ли способ обойти это как-то для тех случаев, когда производительность является проблемой?

Единственный другой способ, который я могу придумать, – запустить ввод в отношении регулярного выражения, но я должен проверить, чтобы узнать, что быстрее.

Нет. Вы должны сделать так:

 boolean tryParseInt(String value) { try { Integer.parseInt(value); return true; } catch (NumberFormatException e) { return false; } } 

… и вы можете использовать его так:

 if (tryParseInt(input)) { Integer.parseInt(input); // We now know that it's safe to parse } 

Apache Commons имеет class IntegerValidator, который, как представляется, делает то, что вы хотите. Java не создает встроенный метод для этого.

Изменить – просто просмотрел ваш комментарий о проблемах с производительностью, связанных с потенциально плохой частью входных данных. Я не знаю, как try / catch на parseInt сравнивается с регулярным выражением. Я бы предположил, что, основываясь на очень незначительных знаниях, регулярные выражения не очень эффективны по сравнению с try / catch в Java.

Во всяком случае, я бы просто сделал это:

 public Integer tryParse(Object obj) { Integer retVal; try { retVal = Integer.parseInt((String) obj); } catch (NumberFormatException nfe) { retVal = 0; // or null if that is your preference } return retVal; } 
  • Бесконечная прокрутка Image ViewPager
  • Я не могу увидеть элементы FirebaseRecyclerAdapter на моем макете
  • Анализ ответа ksoap2
  • Разница между статическими и финальными?
  • Является ли Java оценкой оставшихся условий после того, как известен логический результат?
  • Изменить положение кнопки «Мое местоположение» в Google Maps API
  • Как вызвать метод после задержки в Android
  • как проверить версию jdk, используемую для компиляции файла .class
  • Событие масштабирования для карт google на Android
  • Как выполнить веб-запрос в своем streamе?
  • Is -Djava.library.path = ... эквивалентно System.setProperty ("java.library.path", ...)
  • Interesting Posts
    Давайте будем гением компьютера.