Учитывая правильный намек, я думаю, что большинство людей со средним образованием могут решить это самостоятельно.Каждый знает, 134 = 100x1 + 10x3 + 1x4
Ключевая часть, которую пропускает большинство людей, заключается в том, что если вы сделаете что-то подобное в Java
System.out.println('0'*1);//48
, он выберет десятичное представление символа 0 в диаграмме ASCII и умножьте ее на 1.
В таблице ASCII символ 0 имеет десятичное представление 48. Таким образом, в приведенной выше строке будет напечатано 48.Так что, если вы делаете что-то вроде «1» - «0», это то же самое, что и 49-48.Поскольку в диаграмме ascii символы 0-9 являются непрерывными, поэтому вы можете взять любой символ от 0 до 9 и вычесть 0, чтобы получить его целочисленное значение.Как только у вас есть целочисленное значение для символа, тогда преобразование всей строки в int является прямым.
Вот еще одно решение проблемы
String a = "-12512";
char[] chars = a.toCharArray();
boolean isNegative = (chars[0] == '-');
if (isNegative) {
chars[0] = '0';
}
int multiplier = 1;
int total = 0;
for (int i = chars.length - 1; i >= 0; i--) {
total = total + ((chars[i] - '0') * multiplier);
multiplier = multiplier * 10;
}
if (isNegative) {
total = total * -1;
}