Как перевести строку в число java
Как перевести строку в число java
Иногда возникают ситуации, когда имея величину какого-либо определенного типа, необходимо присвоить ее переменной другого типа. С переменными и их типами мы познакомились в прошлом уроке, в этом уроке мы рассмотрим наиболее популярные преобразования типов в Java:
Java преобразование строки в число (STRING to NUMBER)
В следующих примерах будет использована конструкция try-catch. Это необходимо для обработки ошибки, в случае, если строка содержит иные символы кроме чисел или число, выходящее за рамки диапазона допустимых значений определенного типа.
Например, строка «somenumber» не может быть переведена в тип int или в любой другой числовой тип. В это случае, при компеляции возникнет ошибка. Чтобы этого избежать, следует обезопаситься с помощью конструкции try-catch.
String to byte
C использованием конструктора
С использованием метода valueOf класса Byte
С использованием метода parseByte класса Byte
Перевод строки в массив байтов и обратно из массива байтов в строку
String to short
C использованием конструктора
C использованием метода valueOf класса Short
C использованием метода parseShort класса Short
String to int
C использованием конструктора
C использованием метода valueOf класса Integer
C использованием метода parseInt класса Integer
String to long
C использованием конструктора
C использованием метода valueOf класса Long
C использованием метода parseLong класса Long
String to float
С использованием конструктора
C использованием метода valueOf класса Float
C использованием метода parseFloat класса Float
String to double
С использованием конструктора
C использованием метода valueOf класса Double
C использованием метода parseDouble класса Double
String to boolean
Преобразование строки в логический тип 2мя способами. Обратите внимание, что строка не соответствующая true, будет преобразована в логическое значение false.
Преобразуем строки в числа в разных системах счисления
Предисловие
Исходная задача
Дана произвольная строка. Выяснить, составляет ли она какое-либо (действительное) число в определённых системах счисления. Вычислить знак числа. Выделить в строке мантиссу и экспоненту, обработать их отдельно, и перемножить друг на друга. Для простоты рассмотрим четыре системы счисления: десятичную, двоичную, восьмеричную и шестнадцатиричную.
Для каждой системы счисления, кроме десятичной определим соответствующий префикс:
0x для 16-ричной.
0c для 8-ричной.
0b для двоичной.
У числа может быть задана экспонента. Определим три вида экспоненты, имеющие следующие префиксы:
‘H’ | ‘h’ : десятичная экспонента для 16-ричных чисел, поскольку буква E уже занята (является цифрой 14 в данной системе).
‘E’ | ‘e’ : десятичная экспонента для остальных чисел, чьё основание системы ниже 14.
‘P’ | ‘p’ : двоичная экспонента для всех представленных чисел.
Пишем код
Так напишем же простой метод для преобразования строки в число из соответствующей системы счисления (указанной в строке) в десятичную. Данный метод должен корректно отделять целую часть от той, что следует после запятой (точки). Обработка знака и экспоненты будет дана ниже.
Методу parse() уже передаются вычисленные компоненты числа, а именно: само число num, его экспонента e, основание экспоненты et, основание системы самого числа base и знак числа sign. В данном методе уже предусмотрена защита от противоречивых данных (например, когда экспонента равна null, но указан её тип, или когда основание системы счисления не является натуральным числом (меньше единицы)). В простом случае, если строка равна null, то данный метод вернёт не-число (NaN). Метод выполняет простую задачу, он просто вычисляет множители итогового выражения result, и выполняет умножение преобразованных строк (экспоненты и самого числа без неё) на переменную знака sign. А вызываемый метод processNumber() переводит строку компонента в число.
Теперь остаётся написать последний метод, который вычисляет знак, экспоненту и основание системы. Ниже дан его код.
Данный метод начинает со стандартной проверки на null-значения. Далее, если строка не null и имеет символы, то проверяется её самый первый символ. Если он имеет знак минуса ( ‘-‘ ) то множитель sign становится равен (-1). Иначе он остаётся равен 1. После вычисления знака идёт вычисление основания системы счисления по префиксу строки. После обработки префикса, снова проверяется наличие оставшейся части символов в строке. Если больше символов нет, то опять возвращается не-число (NaN). Если префикс основания отсутствует, то основание base считается равным 10. Затем вычисляется экспонента exp числа и индекс idx её начала для её последующего отделения от исходной строки. После вычисления всех компонентов, управление передаётся методу parse().
Заключение
Метод достаточно хорош, но ещё не идеален. При выходе из диапазона значений стандартных типов, можно получить неверный результат (а именно, отрицательные числа, когда как строка представляет положительное число, и наоборот). Он минует исключение NumberFormatException, возвращая не-число NaN когда обнаруживает недопустимый символ (не принадлежащий диапазону цифр в основании) а также NullPointerException, так как есть проверки на null (сводящиеся к замене null на NaN).
Следует также отметить, что самая последняя процедура processNumber(String num) имеет место уже с готовой лексемой num, лишённой лишних пробельных символов. При дублировании знака числа (минуса), результат будет снова NaN. Также, если сама экспонента NaN то и итоговое значение будет NaN. Однако процедура допускает наличие лидирующих нулей вначале числа.
Данную утилиту можно использовать только уже с коллекцией строк (цепочек), заранее выделенных из входного потока.
Как преобразовать строку в число
Очень часто бывает следующая задача: конвертировать строку в числовой тип. В Java это можно сделать разными способами. Главное – учитывать максимальную размерность данных и точность (для дробных чисел).
Преобразование строки в целое число
Для конвертации строк в целые числа есть методы Integer.parseInt и Long.parseLong для конвертации в типы int и long, соответственно.
Простой способ получить int из строки:
Примечание: метод Integer.parseInt корректно преобразует числа, входящие в диапазон типа int (-2147483648..2147483647). Если число выходит за эти границы или содержит недопустимые символы, будет выброшено исключение NumberFormatException:
Если вам нужны числа большей размерности, чем int, воспользуйтесь методом Long.parseLong:
Например, можно использовать такой утилитарный метод, который при невозможности корректно распарсить строку вернёт ноль:
Преобразование строки в дробное число
Для преобразования строк в дробные числа можно воспольоваться методами Float.parseFloat и Double.parseDouble, которые производят числа типов float и double, соответственно:
Стоит заметить, что лучше пользоваться double вместо float из-за повышенной точности double.
Преобразование больших чисел
Если вам не хватает размерности для хранения чисел типах long и double, вы можете использовать BigInteger и BigDecimal:
Здесь не получится воспользоваться преобразованием в int из-за выхода за размеры int; получится преобразовать в double, но с потерей точности.
Заключение
В данной статье мы описали стандартные методы преобразования строки в число. При выборе метода нужно учитывать размерность типов, к которому приводится число.
Преобразование строки в int или Integer в Java
В этой статье мы покажем несколько способов преобразования строки в int или целое число.
1. введение
Преобразование String в int или Integer – очень распространенная операция в Java. В этой статье мы покажем несколько способов решения этой проблемы.
Есть несколько простых способов справиться с этим базовым преобразованием.
2. Integer.parseInt()
Одним из основных решений является использование Integer выделенного статического метода: parseInt() , который возвращает примитивное int значение :
По умолчанию метод parseInt() предполагает, что заданная строка является целым числом base-10. Кроме того, этот метод принимает еще один аргумент для изменения этого значения по умолчанию radix. Например, мы можем разобрать двоичную строку s следующим образом:
Естественно, этот метод также можно использовать с любым другим радиксом, таким как 16 (шестнадцатеричный) или 8 (восьмеричный).
3. Integer.valueOf()
Другим вариантом было бы использовать статический Integer.valueOf() метод, который возвращает Integer экземпляр :
Аналогично, метод valueOf() также принимает пользовательский radix в качестве второго аргумента:
3.1. Целочисленный кэш
На первый взгляд может показаться, что значение методов() и parseInt() совершенно одинаковы. По большей части это верно — даже метод valueOf() делегирует метод parseInt внутренне.
Поэтому настоятельно рекомендуется использовать valueOf() вместо parseInt() для извлечения коробочных целых чисел, так как это может привести к улучшению общего объема нашего приложения.
4. Конструктор целых чисел
Вы также можете использовать конструктор Integer :
5. Целое число.декодирование()
Кроме того, Integer.decode() работает аналогично Integer.value(), но также может принимать различные числовые представления :
6. Исключение NumberFormatException
Все упомянутые выше методы выбрасывают исключение NumberFormatException, при обнаружении неожиданных String значений. Здесь вы можете увидеть пример такой ситуации:
7. С Гуавой
Конечно, нам не нужно придерживаться самого ядра Java. Вот как то же самое можно сделать с помощью Guava Ints.TryParse(), который возвращает null значение, если он не может разобрать входные данные:
8. Заключение
Java Преобразует строку в целое число
Вступление
Существует несколько способов добиться этого простого преобразования с помощью методов, встроенных в JDK.
Преобразование строки в целое число
Эти три метода имеют разные типы возвращаемых данных:
Тем не менее, это справедливо, чтобы задать вопрос:
Разница в том, что decode() Также принимает другие представления чисел, отличные от обычных десятичных – шестнадцатеричных цифр, восьмеричных цифр и т. Д.
Целое число.Синтаксический анализ()
Метод parseInt() поставляется в двух вариантах:
Запуск этого фрагмента кода приведет к:
Целое число.valueOf()
Значение () поставляется в трех вариантах:
Запуск этого фрагмента кода приведет к:
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
Целое число.декодировать()
Метод decode() принимает один параметр и поставляется в одном варианте:
Метод decode() принимает десятичные, шестнадцатеричные и восьмеричные числа, но не поддерживает двоичные:
Запуск этого фрагмента кода приведет к:
Вывод
Мы рассмотрели одну из фундаментальных тем Java и общих проблем, с которыми сталкиваются разработчики, – преобразование строки в целое число или int с помощью инструментов, поставляемых с JDK.