我正在尝试将字符串转换为整数,而不使用任何内置方法(如parseint()),对整数进行一些计算,然后将其转换回字符串。现在我可以将整数转换为字符串,但我需要帮助将初始String转换为整数。
public static void main(String[] args) {
String s="1234";
int i= (s)==1234;
int i2=s/2 = 617;
String s2=i2 = 617;
}
答案 0 :(得分:1)
GrepCode上提供source code for Integer.parseInt
。它使用package-private方法生成NumberFormatException
错误,但您可以将其保留,并且代码仍可用于有效字符串。
public static int parseInt(String s, int radix) {
int result = 0;
boolean negative = false;
int i = 0, len = s.length();
int limit = -Integer.MAX_VALUE;
int multmin;
int digit;
if (len > 0) {
char firstChar = s.charAt(0);
if (firstChar < '0') {
if (firstChar == '-') {
negative = true;
limit = Integer.MIN_VALUE;
}
i++;
}
multmin = limit / radix;
while (i < len) {
digit = Character.digit(s.charAt(i++), radix);
result *= radix;
result -= digit;
}
}
return negative ? result : -result;
}
答案 1 :(得分:0)
将String转换为int而不使用任何库函数
public static int stringToInt(String number) {
int res = 0;
for (int i = 0; i < number.length(); i++) {
res = res * 10 + number.charAt(i) - '0';
}
return res;
}
执行您要执行的任何计算,然后使用以下方法将int
转换回String
,而不使用任何库函数
将int转换为没有任何库函数的String
public static String parseInt(int integer)
{
boolean ifNegative = integer<0;
boolean ifMin = integer == Integer.MIN_VALUE;
StringBuilder builder = new StringBuilder();
integer = ifNegative?(ifMin?Integer.MAX_VALUE:-integer):integer;
List<Integer> list = new LinkedList<Integer>();
int remaining = integer;
int currentDigit = 0 ;
while(true)
{
currentDigit = remaining%10;
list.add(currentDigit);
remaining /= 10;
if(remaining==0) break;
}
currentDigit = list.remove(0);
builder.append(ifMin?currentDigit+1:currentDigit);
for(int c : list)
builder.append(c);
builder.reverse().insert(0, ifNegative?'-':'+');
return builder.toString();
}