How do I convert a String to an int in Java?

ID : 153

viewed : 276

Tags : javastringinttype-conversionjava





Top 5 Answer for How do I convert a String to an int in Java?

vote vote

96

String myString = "1234"; int foo = Integer.parseInt(myString); 

If you look at the Java documentation you'll notice the "catch" is that this function can throw a NumberFormatException, which of course you have to handle:

int foo; try {    foo = Integer.parseInt(myString); } catch (NumberFormatException e) {    foo = 0; } 

(This treatment defaults a malformed number to 0, but you can do something else if you like.)

Alternatively, you can use an Ints method from the Guava library, which in combination with Java 8's Optional, makes for a powerful and concise way to convert a string into an int:

import com.google.common.primitives.Ints;  int foo = Optional.ofNullable(myString)  .map(Ints::tryParse)  .orElse(0) 
vote vote

86

For example, here are two ways:

Integer x = Integer.valueOf(str); // or int y = Integer.parseInt(str); 

There is a slight difference between these methods:

  • valueOf returns a new or cached instance of java.lang.Integer
  • parseInt returns primitive int.

The same is for all cases: Short.valueOf/parseShort, Long.valueOf/parseLong, etc.

vote vote

72

Well, a very important point to consider is that the Integer parser throws NumberFormatException as stated in Javadoc.

int foo; String StringThatCouldBeANumberOrNot = "26263Hello"; //will throw exception String StringThatCouldBeANumberOrNot2 = "26263"; //will not throw exception try {       foo = Integer.parseInt(StringThatCouldBeANumberOrNot); } catch (NumberFormatException e) {       //Will Throw exception!       //do something! anything to handle the exception. }  try {       foo = Integer.parseInt(StringThatCouldBeANumberOrNot2); } catch (NumberFormatException e) {       //No problem this time, but still it is good practice to care about exceptions.       //Never trust user input :)       //Do something! Anything to handle the exception. } 

It is important to handle this exception when trying to get integer values from split arguments or dynamically parsing something.

vote vote

64

Do it manually:

public static int strToInt(String str){     int i = 0;     int num = 0;     boolean isNeg = false;      // Check for negative sign; if it's there, set the isNeg flag     if (str.charAt(0) == '-') {         isNeg = true;         i = 1;     }      // Process each character of the string;     while( i < str.length()) {         num *= 10;         num += str.charAt(i++) - '0'; // Minus the ASCII code of '0' to get the value of the charAt(i++).     }      if (isNeg)         num = -num;     return num; } 
vote vote

51

An alternate solution is to use Apache Commons' NumberUtils:

int num = NumberUtils.toInt("1234"); 

The Apache utility is nice because if the string is an invalid number format then 0 is always returned. Hence saving you the try catch block.

Apache NumberUtils API Version 3.4

Top 3 video Explaining How do I convert a String to an int in Java?







Related QUESTION?