Query:
My String contains only numbers, and I want to return the number it represents. For example, given the string "1234"
the result should be the number 1234
.
In this post, I’ll convert how to convert Integer to String in Java as well.
How to convert a String to int in Java?
In Java you can convert String to Integer by the following methods:
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)
Methods to convert String to integer in Java:
For example, here are two ways:
Convert String to integer using valueOf():
Integer x = Integer.valueOf(str);
Convert String to Integer using parseInt():
int y = Integer.parseInt(str);
There is a slight difference between parseInt() and valueOf() methods:
valueOf
returns a new or cached instance ofjava.lang.Integer
parseInt
returns primitiveint
.
The same is for all cases: Short.valueOf
/parseShort
, Long.valueOf
/parseLong
, etc.
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.
Answer #3:
Currently, I’m doing an assignment for college, where I can’t use certain expressions, such as the ones above, and by looking at the ASCII table, I managed to do it. It’s a far more complex code, but it could help others that are restricted like I was.
The first thing to do is to receive the input, in this case, a string of digits; I’ll call it String number
, and in this case, I’ll exemplify it using the number 12, therefore String number = "12";
Another limitation was the fact that I couldn’t use repetitive cycles, therefore, a for
cycle (which would have been perfect) can’t be used either. This limits us a bit, but then again, that’s the goal. Since I only needed two digits (taking the last two digits), a simple charAt
solved it:
// Obtaining the integer values of the char 1 and 2 in ASCII
int semilastdigitASCII = number.charAt(number.length() - 2);
int lastdigitASCII = number.charAt(number.length() - 1);
Having the codes, we just need to look up at the table, and make the necessary adjustments:
double semilastdigit = semilastdigitASCII - 48; // A quick look, and -48 is the key
double lastdigit = lastdigitASCII - 48;
Now, why double? Well, because of a really “weird” step. Currently, we have two doubles, 1 and 2, but we need to turn it into 12, there isn’t any mathematic operation that we can do.
We’re dividing the latter (lastdigit) by 10 in the fashion 2/10 = 0.2
(hence why double) like this:
lastdigit = lastdigit / 10;
This is merely playing with numbers. We were turning the last digit into a decimal. But now, look at what happens:
double jointdigits = semilastdigit + lastdigit; // 1.0 + 0.2 = 1.2
Without getting too into the math, we’re simply isolating units the digits of a number. You see, since we only consider 0-9, dividing by a multiple of 10 is like creating a “box” where you store it (think back at when your first-grade teacher explained to you what a unit and a hundred were). So:
int finalnumber = (int) (jointdigits*10); // Be sure to use parentheses "()"
And there you go. You turned a String of digits (in this case, two digits), into an integer composed of those two digits, considering the following limitations:
- No repetitive cycles
- No “Magic” Expressions such as parseInt
Answer #4:
Apart from the previous answers, I would like to add several functions. These are results while you use them:
public static void main(String[] args) {
System.out.println(parseIntOrDefault("123", 0)); // 123
System.out.println(parseIntOrDefault("aaa", 0)); // 0
System.out.println(parseIntOrDefault("aaa456", 3, 0)); // 456
System.out.println(parseIntOrDefault("aaa789bbb", 3, 6, 0)); // 789
}
Implementation:
public static int parseIntOrDefault(String value, int defaultValue) {
int result = defaultValue;
try {
result = Integer.parseInt(value);
}
catch (Exception e) {
}
return result;
}
public static int parseIntOrDefault(String value, int beginIndex, int defaultValue) {
int result = defaultValue;
try {
String stringValue = value.substring(beginIndex);
result = Integer.parseInt(stringValue);
}
catch (Exception e) {
}
return result;
}
public static int parseIntOrDefault(String value, int beginIndex, int endIndex, int defaultValue) {
int result = defaultValue;
try {
String stringValue = value.substring(beginIndex, endIndex);
result = Integer.parseInt(stringValue);
}
catch (Exception e) {
}
return result;
}
How to convert Integer to String in Java?
There are multiple ways:
String.valueOf(number)
(my preference)"" + number
(I don’t know how the compiler handles it, perhaps it is as efficient as the above)Integer.toString(number)
Integer class has static method toString() – you can use it:
int i = 1234;
String str = Integer.toString(i);
Returns a String object representing the specified integer. The argument is converted to signed decimal representation and returned as a string, exactly as if the argument and radix 10 were given as arguments to the toString(int, int) method.
Always use either String.valueOf(number)
or Integer.toString(number)
.
Using “” + number is an overhead and does the following:
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(number);
return sb.toString();
Answer #2:
The way I know how to convert an integer into a string is by using the following code:
Integer.toString(int);
and
String.valueOf(int);
If you had an integer i, and a string s, then the following would apply:
int i;
String s = Integer.toString(i); or
String s = String.valueOf(i);
If you wanted to convert a string “s” into an integer “i”, then the following would work:
i = Integer.valueOf(s).intValue();
In this post, I shared answers to how to convert String to Integer and vice-versa in Java.
Hope you learned something from this post.
Follow Programming Articles for more!