- Как преобразовать строку в число
- Преобразование строки в целое число
- Преобразование строки в дробное число
- Преобразование больших чисел
- Заключение
- Converting Between Numbers and Strings
- Converting Numbers to Strings
- Вопрос-ответ: как в Java правильно конвертировать String в int?
- Обсуждение
- Изучаем преобразование строки в число Java
- Простой пример преобразования “ string to integer” в Java
- Изучаем преобразование строки в число Java - полный пример перевода String в int
- Преобразование строки в число Java - пояснение
- Преобразование строки в число Java- дополнительные замечания
- Преобразование строки в число Java - резюме
- Java String to Int – How to Convert a String to an Integer
- 1. Use Integer.parseInt() to Convert a String to an Integer
- 2. Use Integer.valueOf() to Convert a String to an Integer
Как преобразовать строку в число
Очень часто бывает следующая задача: конвертировать строку в числовой тип. В Java это можно сделать разными способами. Главное – учитывать максимальную размерность данных и точность (для дробных чисел).
Преобразование строки в целое число
Для конвертации строк в целые числа есть методы Integer.parseInt и Long.parseLong для конвертации в типы int и long, соответственно.
Простой способ получить int из строки:
int a1 = Integer.parseInt("123"); System.out.println(a1);
Примечание: метод Integer.parseInt корректно преобразует числа, входящие в диапазон типа int (-2147483648..2147483647). Если число выходит за эти границы или содержит недопустимые символы, будет выброшено исключение NumberFormatException:
int a2 = Integer.parseInt("3000000000"); // NumberFormatException int a3 = Integer.parseInt("123abc"); // NumberFormatException
Если вам нужны числа большей размерности, чем int, воспользуйтесь методом Long.parseLong:
long b1 = Long.parseLong("3000000000"); System.out.println(b1);
Например, можно использовать такой утилитарный метод, который при невозможности корректно распарсить строку вернёт ноль:
public static long stringToLong(String s) < try < return Long.parseLong(s); >catch (NumberFormatException e) < return 0; >>
Преобразование строки в дробное число
Для преобразования строк в дробные числа можно воспольоваться методами Float.parseFloat и Double.parseDouble, которые производят числа типов float и double, соответственно:
float f1 = Float.parseFloat("123.45"); System.out.println(f1); double d1 = Double.parseDouble("123.45"); System.out.println(d1);
Стоит заметить, что лучше пользоваться double вместо float из-за повышенной точности double.
Преобразование больших чисел
Если вам не хватает размерности для хранения чисел типах long и double, вы можете использовать BigInteger и BigDecimal:
System.out.println(new BigInteger("9223372036854775807000")); System.out.println(new BigDecimal("9.223372036854776777E21"));
Здесь не получится воспользоваться преобразованием в int из-за выхода за размеры int; получится преобразовать в double, но с потерей точности.
Заключение
В данной статье мы описали стандартные методы преобразования строки в число. При выборе метода нужно учитывать размерность типов, к которому приводится число.
Converting Between Numbers and Strings
Frequently, a program ends up with numeric data in a string objecta value entered by the user, for example.
The Number subclasses that wrap primitive numeric types ( Byte , Integer , Double , Float , Long , and Short ) each provide a class method named valueOf that converts a string to an object of that type. Here is an example, ValueOfDemo , that gets two strings from the command line, converts them to numbers, and performs arithmetic operations on the values:
public class ValueOfDemo < public static void main(String[] args) < // this program requires two // arguments on the command line if (args.length == 2) < // convert strings to numbers float a = (Float.valueOf(args[0])).floatValue(); float b = (Float.valueOf(args[1])).floatValue(); // do some arithmetic System.out.println("a + b = " + (a + b)); System.out.println("a - b = " + (a - b)); System.out.println("a * b = " + (a * b)); System.out.println("a / b = " + (a / b)); System.out.println("a % b = " + (a % b)); >else < System.out.println("This program " + "requires two command-line arguments."); >> >
The following is the output from the program when you use 4.5 and 87.2 for the command-line arguments:
a + b = 91.7 a - b = -82.7 a * b = 392.4 a / b = 0.0516055 a % b = 4.5
Note: Each of the Number subclasses that wrap primitive numeric types also provides a parseXXXX() method (for example, parseFloat() ) that can be used to convert strings to primitive numbers. Since a primitive type is returned instead of an object, the parseFloat() method is more direct than the valueOf() method. For example, in the ValueOfDemo program, we could use:
float a = Float.parseFloat(args[0]); float b = Float.parseFloat(args[1]);
Converting Numbers to Strings
Sometimes you need to convert a number to a string because you need to operate on the value in its string form. There are several easy ways to convert a number to a string:
int i; // Concatenate "i" with an empty string; conversion is handled for you. String s1 = "" + i;
// The valueOf class method. String s2 = String.valueOf(i);
Each of the Number subclasses includes a class method, toString() , that will convert its primitive type to a string. For example:
int i; double d; String s3 = Integer.toString(i); String s4 = Double.toString(d);
The ToStringDemo example uses the toString method to convert a number to a string. The program then uses some string methods to compute the number of digits before and after the decimal point:
public class ToStringDemo < public static void main(String[] args) < double d = 858.48; String s = Double.toString(d); int dot = s.indexOf('.'); System.out.println(dot + " digits " + "before decimal point."); System.out.println( (s.length() - dot - 1) + " digits after decimal point."); >>
The output of this program is:
3 digits before decimal point. 2 digits after decimal point.
Вопрос-ответ: как в Java правильно конвертировать String в int?
int в String — очень просто, и вообще практически любой примитивный тип приводится к String без проблем.
int x = 5; String text = "X lang-java line-numbers">int i = Integer.parseInt (myString);
Если строка, обозначенная переменной myString , является допустимым целым числом, например «1», «200», Java спокойно преобразует её в примитивный тип данных int . Если по какой-либо причине это не удается, подобное действие может вызвать исключение NumberFormatException , поэтому чтобы программа работала корректно для любой строки, нам нужно немного больше кода. Программа, которая демонстрирует метод преобразования Java String в int , управление для возможного NumberFormatException :
public class JavaStringToIntExample < public static void main (String[] args) < // String s = "fred"; // используйте это, если вам нужно протестировать //исключение ниже String s = "100"; try < // именно здесь String преобразуется в int int i = Integer.parseInt(s.trim()); // выведем на экран значение после конвертации System.out.println("int i = " + i); >catch (NumberFormatException nfe) < System.out.println("NumberFormatException: " + nfe.getMessage()); >>
Обсуждение
Когда вы изучите пример выше, вы увидите, что метод Integer.parseInt (s.trim ()) используется для превращения строки s в целое число i , и происходит это в следующей строке кода:
int i = Integer.parseInt (s.trim ())
- Integer.toString (int i) используется для преобразования int в строки Java.
- Если вы хотите преобразовать объект String в объект Integer (а не примитивный класс int ), используйте метод valueOf () для класса Integer вместо метода parseInt () .
- Если вам нужно преобразовать строки в дополнительные примитивные поля Java, используйте такие методы, как Long.parseLong () и ему подобные.
Изучаем преобразование строки в число Java
Часто задаваемый вопрос по типам String/int в Java : Как преобразовать тип String в тип Int ?
Решение : используя метод parseInt класса Java Integer . Метод parseInt переводит тип String в Int , и вызывает исключение NumberFormatException , если строка не может быть приведена к целочисленному значению.
Посмотрим на два коротких примера.
Простой пример преобразования “ string to integer” в Java
Игнорируя исключение, которое может возникнуть, всё, что нужно сделать для перевода String в int , умещается в одну строку кода:
int i = Integer.parseInt(myString);
Если строка, представленная переменной myString , является корректным целым числом, например, “1”, “200”, и т.п., она будет приведена к типу int . Если преобразование окончится неудачей, будет вызвано исключение NumberFormatException . Поэтому ваш код должен быть немного длиннее, чтобы учитывать это, как показано в следующем примере.
Изучаем преобразование строки в число Java - полный пример перевода String в int
Ниже приведен полный код примера программы. Она демонстрирует процесс перевода в Java строки в целое число и обработку возможного исключения NumberFormatException :
public class JavaStringToIntExample< public static void main (String[] args) < // String s = "fred"; // Используйте эту строку для теста исключения String s = "100"; try < // перевод String в int выполняется здесь int i = Integer.parseInt(s.trim()); // выводим значение после преобразования System.out.println("int i = " + i); > catch (NumberFormatException nfe) < System.out.println("NumberFormatException: " + nfe.getMessage()); >>>
Преобразование строки в число Java - пояснение
В приведенном выше примере метод Integer.parseInt(s.trim()) используется для перевода строки s в целое число i в следующей строке кода:
int i = Integer.parseInt(s.trim());
Если попытка преобразования оканчивается неудачей ( например, если вы пытаетесь привести строку fred к целому типу ), то метод parseInt класса Integer вызовет исключение NumberFormatException , которое необходимо обработать в блоке try/catch .
В этом примере на самом деле не нужно использовать метод trim() класса String . Но в реальных программах он понадобится, поэтому я применил его здесь.
Преобразование строки в число Java- дополнительные замечания
Раз уж мы обсуждаем эту тему, вот несколько замечаний о классах String и Integer :
- Метод Integer.toString(int i) используется для преобразования из типа int в класс Java String .
- Для преобразования объекта String в объект Integer используйте метод valueOf() класса Integer вместо parseInt() .
- Если нужно приводить строки к другим примитивным типам Java , например, long , используйте методы Long.parseLong() , и т.п.
Преобразование строки в число Java - резюме
Надеюсь, что этот пример перевода String в int в Java был полезным. Если у вас есть вопросы или замечания, оставляйте их в комментариях.
Сергей Бензенко автор-переводчик статьи « How to convert a Java String to an Int »
Пожалуйста, оставляйте свои отзывы по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, отклики, дизлайки, подписки, лайки!
Java String to Int – How to Convert a String to an Integer
Thanoshan MV
String objects are represented as a string of characters.
If you have worked in Java Swing, it has components such as JTextField and JTextArea which we use to get our input from the GUI. It takes our input as a string.
If we want to make a simple calculator using Swing, we need to figure out how to convert a string to an integer. This leads us to the question – how can we convert a string to an integer?
In Java, we can use Integer.valueOf() and Integer.parseInt() to convert a string to an integer.
1. Use Integer.parseInt() to Convert a String to an Integer
This method returns the string as a primitive type int. If the string does not contain a valid integer then it will throw a NumberFormatException.
So, every time we convert a string to an int, we need to take care of this exception by placing the code inside the try-catch block.
Let's consider an example of converting a string to an int using Integer.parseInt() :
String str = "25"; try < int number = Integer.parseInt(str); System.out.println(number); // output = 25 >catch (NumberFormatException ex)
Let's try to break this code by inputting an invalid integer:
String str = "25T"; try < int number = Integer.parseInt(str); System.out.println(number); >catch (NumberFormatException ex)
As you can see in the above code, we have tried to convert 25T to an integer. This is not a valid input. Therefore, it must throw a NumberFormatException.
Here's the output of the above code:
java.lang.NumberFormatException: For input string: "25T" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at OOP.StringTest.main(StringTest.java:51)
Next, we will consider how to convert a string to an integer using the Integer.valueOf() method.
2. Use Integer.valueOf() to Convert a String to an Integer
This method returns the string as an integer object. If you look at the Java documentation, Integer.valueOf() returns an integer object which is equivalent to a new Integer(Integer.parseInt(s)) .
We will place our code inside the try-catch block when using this method. Let us consider an example using the Integer.valueOf() method:
String str = "25"; try < Integer number = Integer.valueOf(str); System.out.println(number); // output = 25 >catch (NumberFormatException ex)
Now, let's try to break the above code by inputting an invalid integer number:
String str = "25TA"; try < Integer number = Integer.valueOf(str); System.out.println(number); >catch (NumberFormatException ex)
Similar to the previous example, the above code will throw an exception.
Here's the output of the above code:
java.lang.NumberFormatException: For input string: "25TA" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.valueOf(Integer.java:766) at OOP.StringTest.main(StringTest.java:42)
We can also create a method to check if the passed-in string is numeric or not before using the above mentioned methods.
I have created a simple method for checking whether the passed-in string is numeric or not.
public class StringTest < public static void main(String[] args) < String str = "25"; String str1 = "25.06"; System.out.println(isNumeric(str)); System.out.println(isNumeric(str1)); >private static boolean isNumeric(String str) < return str != null && str.matches("[0-9.]+"); >>
The isNumeric() method takes a string as an argument. First it checks if it is null or not. After that we use the matches() method to check if it contains digits 0 to 9 and a period character.
This is a simple way to check numeric values. You can write or search Google for more advanced regular expressions to capture numerics depending on your use case.
It is a best practice to check if the passed-in string is numeric or not before trying to convert it to integer.
You can connect with me on Medium.
Happy Coding!