在Java中手动将字符串转换为整数

Man*_*anu 14 java string integer

我有一串由数字序列组成的字符串(例如"1234").如何在不使用Java的库函数Stringint情况下返回Integer.parseInt

public class StringToInteger {
  public static void main(String [] args){
    int i = myStringToInteger("123");
    System.out.println("String decoded to number " + i);
  }

  public int myStringToInteger(String str){
      /* ... */
  }
}
Run Code Online (Sandbox Code Playgroud)

Ósc*_*pez 27

这有什么问题?

int i = Integer.parseInt(str);
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您确实需要手动进行转换,请尝试以下方法:

public static int myStringToInteger(String str) {
    int answer = 0, factor = 1;
    for (int i = str.length()-1; i >= 0; i--) {
        answer += (str.charAt(i) - '0') * factor;
        factor *= 10;
    }
    return answer;
}
Run Code Online (Sandbox Code Playgroud)

以上内容对于正整数都可以正常工作,如果数字是负数,你必须先做一点检查,但我会将其作为练习留给读者.


tem*_*def 7

如果不允许使用标准库,则有许多方法可以解决此问题.考虑这个问题的一种方法是作为递归函数:

  1. 如果n小于10,只需将其转换为保持其数字的单字符字符串.例如,3变为"3".
  2. 如果n大于10,则使用除法和模数得到n的最后一位数和通过排除最后一位数得到的数字.递归获取第一个数字的字符串,然后为最后一个数字附加相应的字符.例如,如果n是137,则递归计算"13"并在"7"上增加"137".

您将需要逻辑到特殊情况0和负数,但否则这可以相当简单地完成.

由于我怀疑这可能是家庭作业(并且知道某些学校的事实),我将把实际转换作为练习留给读者.:-)

希望这可以帮助!