Как преобразовать строку в int в Java

Единственное требование для преобразования строки в целое число в java заключается в том, что она должна содержать только цифры, которые вы хотите поместить в переменную типа int, за исключением первого символа, который указывает на отрицательное значение "-" или положительное значение "+". Например, результатом "-123" является число -123.
Многие будут приводить, но java этого не позволяет.

cannot Cast from string to int

Исключение Cannot приводит из String в int означает, что компилятор Java не разрешает приводить String к int. Это имеет смысл, так как они не имеют одного и того же типа.

Объект Integer

Объект Integer содержит один атрибут типа int. Этот класс содержит несколько методов для преобразования int в String и String в int.

1) Создавая новый экземпляр Integer(String s)

Этот конструктор выделяет новый объект, содержащий целое число:

public class Приведение {

public static void main(String[] args) {
String nbs = "12";
int nb;
nb = new Integer(nbs);
System.out.println(nb);
}
}
Output:

12

2) с помощью Integer.valueOf(String s)

Метод valueOf() возвращает новый экземпляр java.lang.Integer который содержит значение, представленное в аргументе String.

public class Cast {

public static void main(String[] args) {
String nbs = "12";
int nb;
nb = new Integer(nbs);
System.out.println(nb);
}
}
Output:

12

3) С помощью Integer.parseInt(String s)

parseInt() возвращает целочисленное значение, как если бы аргумент был передан в valueOf(String s).

public class Cast {

public static void main(String[] args) {
String nbs = "12";
int nb;
nb = Integer.parseInt(nbs);
System.out.println(nb);
}
}
Output:

12

Exception NumberFormatException thrown

NumberFormatException вызывается, если переданный аргумент имеет неправильный формат. Причины:
  • Переданный аргумент содержит хотя бы один нечисловой символ.
  • Число не является десятичным, как число с плавающей запятой 12.4f.

Улучшаем нашу процедуру

Чтобы избежать завершения программы, мы вернем значение по умолчанию, если формат не соблюдается.

public class Cast {

public static void main(String[] args) {
String nbs = "12.4s";
int nb;
System.out.println(stringToInt(nbs,0));
}

public static int stringToInt(String value, int _default) {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
return _default;
}
}
}
Output:

0
В случае, когда переменная nbs не является числовой, функция stringToInt() возвращает 0 по умолчанию.

References:
Oracle.com -  Класс Integer
JRJC-Преобразовать строку в int