Найти целое число java

Java: Проверьте, является ли строка числом

В этом уроке мы рассмотрим примеры того, как проверить, представляет ли строка число в Java. Мы будем использовать основную Java и библиотеку Apache Commons, а также регулярные выражения.

Вступление

Строки-это удобный способ передачи информации и получения входных данных от пользователя.

В этой статье мы рассмотрим несколько способов проверить, является ли строка числовой в Java – то есть, представляет ли строка числовое значение.

Проверьте, является ли строка числовой с помощью ядра Java

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

Самый простой способ проверить, является ли строка числовой или нет,-это использовать один из следующих встроенных методов Java:

  1. Целое число.Синтаксический анализ()
  2. Целое число.valueOf()
  3. Double.Парседубль()
  4. Поплавок.парсеФлоат()
  5. Длинный.парсеЛонг()

Эти методы преобразуют заданную строку в ее числовой эквивалент. Если они не могут преобразовать его, создается исключение NumberFormatException , указывающее, что строка не была числовой.

Стоит отметить , что Integer.valueOf() возвращает новое целое число () , в то время как Integer.parseInt() возвращает примитив int . Имейте это в виду, если такая разница изменит ход вашей программы.

String string = «10»; try < intValue = Integer.parseInt(string); return true; >catch (NumberFormatException e)

Читайте также:  Установить javascript для google chrome

Теперь мы можем абстрагировать эту функциональность в вспомогательный метод для удобства:

public static boolean isNumeric(String string) < int intValue; System.out.println(String.format("Parsing string: \"%s\"", string)); if(string == null || string.equals("")) < System.out.println("String cannot be parsed, it is null or empty."); return false; >try < intValue = Integer.parseInt(string); return true; >catch (NumberFormatException e) < System.out.println("Input String cannot be parsed to Integer."); >return false; >

Теперь мы можем просто позвонить:

String string = «10»; if(isNumeric(string)) < System.out.println("String is numeric!"); // Do something >else

Выполнение этого кода приведет к:

Parsing string: "10" String is numeric!

С другой стороны, если мы ожидаем, что Строка будет содержать действительно большое число, то мы можем вызвать конструктор BigInteger(Строка) , который преобразует представление String в BigInteger .

Проверьте, является ли строка числовой с помощью Apache Commons

Apache Commons является одной из наиболее часто используемых сторонних библиотек для расширения базовой платформы Java. Это дает нам более точный контроль над основными классами Java, в данном случае строками.

Мы рассмотрим два класса из библиотеки Apache Commons:

Оба из которых очень похожи на их аналоги ванильного класса Java, но с акцентом на безопасные для нуля операции (для чисел и строк соответственно), что означает, что мы даже можем определить значения по умолчанию для отсутствующих ( нулевых ) значений.

Давайте теперь посмотрим, как мы можем проверить числовые значения с помощью этих методов.

числа.Сопоставимо()

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

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

Обратите внимание, что шестнадцатеричные числа и научные обозначения не считаются поддающимися анализу.

Теперь нам даже не нужен вспомогательный метод для удобства, так как поддается анализу() возвращает логическое значение само по себе:

String string = «10»; if (NumberUtils.isParsable(string)) < System.out.println("String is numeric!"); >else

Git Essentials

Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!

Этот код должен возвращать:

NumberUtils.isCreatable()

Этот метод также принимает строку и проверяет, является ли она допустимым номером Java . С помощью этого метода мы можем охватить еще больше чисел, потому что допустимое число Java включает в себя четные шестнадцатеричные и восьмеричные числа, научную нотацию, а также числа, отмеченные классификатором типа.

Теперь мы можем даже использовать что-то вроде:

String string = «0x10AB»; if (NumberUtils.isCreatable(string)) < System.out.println("String contains a creatable number!"); >else

String contains a creatable number!

числа.isDigits()

Число .Метод isDigits() проверяет, содержит ли строка только Цифры в Юникоде. Если Строка содержит начальный знак или десятичную точку, метод вернет false :

String string = «25»; if (NumberUtils.isDigits(string)) < System.out.println("String is numeric!"); >else

StringUtils.IsNumeric()

StringUtils.IsNumeric() является StringUtils эквивалентом NumberUtils.isDigits() .

Если Строка проходит числовой тест, она все равно может вызвать исключение NumberFormatException при анализе методами, о которых мы упоминали ранее, например, если она находится вне диапазона для int или long .

Используя этот метод, мы можем определить, можем ли мы проанализировать Строку в Целое число :

String string = «25»; if (StringUtils.isNumeric(string)) < System.out.println("String is numeric!"); >else

StringUtils.isNumericSpace()

Кроме того, если мы ожидаем найти больше чисел в строке, мы можем использовать isNumericSpace , еще один полезный StringUtils метод, о котором стоит упомянуть. Он проверяет, содержит ли строка | только цифры Юникода или пробелы .

Давайте проверим строку, содержащую числа и пробелы:

String string = «25 50 15»; if (StringUtils.isNumericSpace(string)) < System.out.println("String is numeric!"); >else

Проверьте, является ли строка числовой с помощью регулярного выражения

Несмотря на то, что большинство разработчиков будут довольны использованием уже реализованного метода, иногда у вас может быть очень специфическая проверка шаблонов:

public static boolean isNumeric(String string) < // Checks if the provided string // is a numeric by applying a regular // expression on it. String regex = "8+[\\.]?9*"; return Pattern.matches(regex, string); >

И тогда мы можем вызвать этот метод:

System.out.println("123: " + isStringNumeric2("123")); System.out.println("I'm totally a numeric, trust me: " + isStringNumeric2("I'm totally a numeric, trust me"));

Выполнение этого дает нам следующий результат:

123: true I'm totally a numeric, trust me: false

Вывод

В этой статье мы рассмотрели несколько способов проверить, является ли строка числовой или нет (представляет собой число) в Java.

Мы начали использовать ядро Java и поймали исключение NumberFormatException , после чего мы использовали библиотеку Apache Commons. Оттуда мы использовали классы StringUtils и NumberUtils , чтобы проверить, является ли строка числовой или нет, в различных форматах.

Читайте ещё по теме:

Источник

Как проверить целое ли число java

Для проверки того, что число целое в Java можно использовать условие number % 1 == 0 Здесь % — оператор взятия остатка от деления, и если остаток от деления на 1 равен 0, то число является целым. Пример:

double number = 5.0; if (number % 1 == 0)  System.out.println("Число является целым."); > else  System.out.println("Число не является целым."); > 

Источник

Проверка, является ли число целым числом в Java

Есть ли какой-либо метод или быстрый способ проверить, является ли число Integer (принадлежит Z-полю) в Java? Я думал, что, возможно, вычитал бы его из округленного числа, но я не нашел никакого метода, который поможет мне в этом. Где я должен проверить? Integer Api?

Вы анализируете число из String, или у вас уже есть число в некотором числе с плавающей запятой или double?

Насколько я знаю, Z — это не поле. Используете ли вы «поле» в каком-то другом смысле, кроме абстрактного математического смысла?

Понял!! Спасибо! .. Итак, вы сохранили его как число с плавающей точкой или что-то еще и хотите проверить, является ли оно «целым числом»?

8 ответов

edit: Предполагается, что x уже находится в некоторой другой числовой форме. Если вы имеете дело со строками, загляните в Integer.parseInt .

Обычно у меня есть функция isInteger (), которая пытается перехватить через Integer.parseInt, возвращая false в случае возникновения исключения.

это хороший ответ, и по этой причине я проголосовал за него — но все же убедитесь, что вы понимаете ограничения представлений с плавающей запятой!

double a = 1.00 if(floor(a) == a) < // a is an integer >else < //a is not an integer. >

В этом примере можно использовать ceil и иметь тот же эффект.

Если вы говорите о значениях с плавающей запятой, вы должны быть очень осторожны из-за характера формата.

лучший способ, которым я это знаю, — это решить какое-то значение epsilon, скажем, 0,000001f, а затем сделать что-то вроде этого:

По существу, вы проверяете, имеет ли z и целочисленный случай z то же значение в пределах некоторого допуска. Это необходимо, потому что плавающие по своей сути являются неточными.

ПРИМЕЧАНИЕ. ОДНАКО: это, вероятно, сломается, если ваши поплавки имеют величину больше, чем Integer.MAX_VALUE (2147483647), и вы должны знать, что по необходимости невозможно проверить интегральность на поплавках выше этого значения.

+1: Вы получаете круглую ошибку на float для целых больше , чем 2 ^ 24 (около 16 миллионов) Если вы используете double вы получаете круглые ошибки для целых gretaer , чем 2 ^ 53 (8 миллионов триллионов)

Источник

Проверка, является ли число целым числом в Java

Есть ли какой-либо метод или быстрый способ проверить, является ли число целым числом (принадлежит полю Z) в Java? Я думал, может быть, вычесть его из округленного числа, но я не нашел никакого метода, который мне в этом поможет. Где я должен проверить? Целое API?

Вы анализируете число из String или у вас уже есть число в каком-то float или double? — person Serhiy &nbsp schedule 31.03.2011

У меня есть любое число, оно может быть и плавающим, и двойным. — person Unknown user &nbsp schedule 31.03.2011

@ntt: N = натуральные числа, Z = целое, Q = рациональное, R = вещественное, C = комплексное — person MicSim &nbsp schedule 31.03.2011

Насколько я знаю, Z не является полем. Используете ли вы поле в каком-то другом смысле, кроме абстрактного математического? — person Alexander Questioning Bresee &nbsp schedule 31.03.2011

Кстати: можно ли здесь показать Unicode-представления этих символов? Как U + 2124 для Z? — person MicSim &nbsp schedule 31.03.2011

Понятно!! Спасибо. Итак, вы сохранили его как число с плавающей запятой или что-то в этом роде и хотите проверить, является ли оно «целым числом»? — person notthetup &nbsp schedule 31.03.2011

Ответы (11)

редактировать: это предполагает, что x уже находится в какой-то другой числовой форме. Если вы имеете дело со строками, загляните в Integer.parseInt .

Обычно у меня есть функция isInteger(), которая пытается перехватить Integer.parseInt, возвращая false в случае возникновения исключения. — person Serhiy; 31.03.2011

это хороший ответ, и я проголосовал за него по этой причине, но все же убедитесь, что вы понимаете ограничения представлений с плавающей запятой! — person Alexander Questioning Bresee; 31.03.2011

изначально это решение не работает для меня, но оно использует его с осторожностью: if (x.intValue() == x.doubleValue()) <> — person taha; 19.05.2021

double a = 1.00 if(floor(a) == a) < // a is an integer >else < //a is not an integer. >

если вы говорите о значениях с плавающей запятой, вы должны быть очень осторожны из-за характера формата. лучший известный мне способ сделать это — выбрать значение эпсилон, скажем, 0,000001f, а затем сделать что-то вроде этого:

по сути, вы проверяете, имеют ли z и целочисленный случай z одинаковую величину в пределах некоторого допуска. Это необходимо, потому что плавающие по своей сути неточны. ПРИМЕЧАНИЕ, ОДНАКО: это, вероятно, сломается, если ваши поплавки имеют величину больше Integer.MAX_VALUE (2147483647), и вы должны знать, что по необходимости невозможно проверить целостность поплавков выше этого значения.

+1: вы получаете круглую ошибку для float для целых чисел больше 2 ^ 24 (около 16 миллионов). Если вы используете double , вы получаете круглые ошибки для целых чисел больше 2 ^ 53 (8 миллионов триллионов) — person Peter Lawrey; 31.03.2011

Под Z я предполагаю, что вы имеете в виду целые числа, то есть 3,-5,77, а не 3,14, 4,02 и т. д. Регулярное выражение может помочь:

Pattern isInteger = Pattern.compile("\\d+"); 

под Z он имел в виду целые числа, en.wikipedia.org/wiki/Integer ‹— Z обычный символ, используемый для представления набора. — person Alexander Questioning Bresee; 31.03.2011

Источник

Оцените статью