To convert a String to an int in Java, use the Integer.parseInt() method. Here’s how to do it, including handling common edge cases and exceptions:
1. Basic Conversion
String numberStr = "123";
int number = Integer.parseInt(numberStr); // Result: 123 (primitive int)
2. Handling Invalid Input
Use a try-catch block to avoid NumberFormatException for invalid strings:
String input = "12a3";
try {
int num = Integer.parseInt(input);
System.out.println("Valid integer: " + num);
} catch (NumberFormatException e) {
System.out.println("Invalid input: " + input);
}
3. Trim Whitespace
Remove leading/trailing whitespace before parsing:
String input = " 456 ";
int num = Integer.parseInt(input.trim()); // Trim whitespace first
4. Convert to Integer Object
Use Integer.valueOf() to get an Integer object (instead of primitive int):
String input = "789";
Integer number = Integer.valueOf(input); // Returns Integer object
5. Specify Number Base (Radix)
Parse numbers in different bases (e.g., binary, hexadecimal):
String binaryStr = "1010"; // Binary (base 2)
int decimal = Integer.parseInt(binaryStr, 2); // Result: 10
String hexStr = "1A"; // Hexadecimal (base 16)
int hexValue = Integer.parseInt(hexStr, 16); // Result: 26
Common Errors & Solutions
| Case | Example | Solution |
|---|---|---|
| Null input | String s = null | Check for null: if (s != null) { ... } |
| Empty string | "" | Validate input before parsing |
| Non-numeric characters | "123a" | Use try-catch or regex validation |
| Overflow | "2147483648" | Use Long.parseLong() for large values |
Alternative: Apache Commons
For more flexible parsing (returns null for invalid input):
import org.apache.commons.lang3.math.NumberUtils;
String input = "invalid";
Integer number = NumberUtils.toInt(input); // Returns 0 if parsing fails
Integer safeNumber = NumberUtils.toInt(input, -1); // Returns -1 on failure
Summary
- Use
Integer.parseInt()for standard cases (throwsNumberFormatException). - Trim whitespace with
.trim()if needed. - Handle exceptions for invalid input.
- Use radix for non-decimal numbers.