Как преобразовать строку в число и обратно
Короткий ответ
Строку в int превращает Integer.parseInt(), число в строку — String.valueOf():
void main() {
int number = Integer.parseInt("42");
String text = String.valueOf(number);
IO.println(number + 1);
IO.println(text + 1);
}Результат:
43
421Другие числовые типы
У каждого числового типа есть свой метод parseXxx():
void main() {
long big = Long.parseLong("9000000000");
double price = Double.parseDouble("19.99");
IO.println(big);
IO.println(price * 2);
}Результат:
9000000000
39.98Объект вместо примитива
Integer.valueOf() возвращает объект Integer — он нужен, например, чтобы положить число в List<Integer>:
void main() {
List<Integer> numbers = new ArrayList<>();
numbers.add(Integer.valueOf("7"));
numbers.add(Integer.valueOf("8"));
IO.println(numbers);
}Результат:
[7, 8]Число в строку
Кроме String.valueOf() подходят Integer.toString() и сложение с пустой строкой. Для форматирования используйте String.format():
void main() {
int count = 5;
String a = Integer.toString(count);
String b = "" + count;
String c = String.format("%03d", count);
IO.println(a + " " + b + " " + c);
}Результат:
5 5 005Неверный ввод
Если строка не является числом, parseInt() выбрасывает NumberFormatException. Перехватите его, чтобы подставить значение по умолчанию:
int toInt(String text, int fallback) {
try {
return Integer.parseInt(text.strip());
} catch (NumberFormatException e) {
return fallback;
}
}
void main() {
IO.println(toInt(" 15 ", 0));
IO.println(toInt("abc", 0));
}Результат:
15
0Частая ошибка
parseInt() не убирает пробелы и не понимает дробную часть — такие строки вызывают исключение:
void main() {
int value = Integer.parseInt("3.5");
IO.println(value);
}Результат:
Exception in thread "main" java.lang.NumberFormatException: For input string: "3.5"Для дробных чисел используйте Double.parseDouble(), а пробелы убирайте через strip().
Функции из этого ответа
- Integer.parseInt() — Превращает строку с целым числом в int.
- Integer.valueOf() — Возвращает объект-обёртку Integer для строки или числа int.
- String.valueOf() — Превращает значение любого типа в строку.
- Double.parseDouble() — Превращает строку с дробным числом в double.