Вам нужно необходимо избежать обратной косой черты в строковых литералах Java:
"\\b\\d+\\b"
Это, конечно, соответствует только положительным целым числам, но не любому целое число, как вы сказали в своем вопросе.Это было ваше намерение?
Я просматривал другие подобные вопросы и пытался использовать двойную обратную косую черту, но это не работает.
Тогда у вас должна быть еще одна ошибка.Я думаю, проблема в том, что вы хотите использовать Matcher.find
вместо matches
.Первый выполняет поиск шаблона в любом месте строки, тогда как последний соответствует, только если строка whole соответствует шаблону.Вот пример того, как использовать Matcher.find
:
Pattern pattern = Pattern.compile("\\b\\d+\\b");
Matcher matcher = pattern.matcher(quantityDesired);
if (matcher.find()) { ... }
Примечание
Если вы действительно хотите сопоставить всю строку, то вам не нужноanchors:
if (quantityDesired.matches("\\d+")) {.......}
И если вы хотите принимать только целые числа, которые вписываются в тип Java int, вы должны использовать Integer.parseInt как Сейфюлислам упомянул , а не анализировать его самостоятельно.