假设我想创建一个方法,将数字作为字符串并返回其数字形式.喜欢
getNumber("123456");
public int getNumber(String number) {
//No library function should used. Means i can't do Integer.parseInteger(number).
} //end of getNumber()
Run Code Online (Sandbox Code Playgroud)
我该如何实现这种方法呢
public int getNumber(String number) {
for (int i=0; i<number.length; i++) {
char c = number.getCharacter(i);
///How can i proceed further
} //end of for()
} //end of getNumber()
Run Code Online (Sandbox Code Playgroud)
Boh*_*ian 16
在不使用库函数的情况下,'0'从每个数字字符中减去字符以给出其int值,然后在添加下一个数字的ìnt值之前将当前总和乘以10来建立数字.
public static int getNumber(String number) {
int result = 0;
for (int i = 0; i < number.length(); i++) {
result = result * 10 + number.charAt(i) - '0';
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
public static int getNumber(String number) {
return number.chars().reduce(0, (a, b) -> 10 * a + b - '0');
}
Run Code Online (Sandbox Code Playgroud)
这主要是因为字符0-9具有连续的ascii值,因此'0'从它们中的任何一个中减去它会给出字符的偏移量'0',这当然是字符的数字等价物.
免责声明:此代码不处理负数,算术溢出或错误输入.
您可能希望增强代码以满足这些需求.实现这样的功能将是有益的,特别是考虑到这显然是功课.
这是一些测试代码:
public static void main(String[] args) {
System.out.println(getNumber("12345"));
}
Run Code Online (Sandbox Code Playgroud)
输出:
12345
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12922 次 |
| 最近记录: |