假设我想创建一个方法,将数字作为字符串并返回其数字形式。像
getNumber("123456");
public int getNumber(String number) {
//No library function should used. Means i can't do Integer.parseInteger(number).
} //end of getNumber()
我如何实现像
这样的方法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()
答案 0 :(得分:14)
不使用库函数,从每个数字字符中减去字符'0'
以获得其int
值,然后在添加下一个数字{之前将当前总和乘以10来建立数字{ {1}}值。
ìnt
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;
}
这主要是因为字符public static int getNumber(String number) {
return number.chars().reduce(0, (a, b) -> 10 * a + b - '0');
}
具有连续的ascii值,因此从其中任何一个中减去0-9
都会为您提供与字符'0'
的偏移量,这当然是等效的数字这个角色。
免责声明:此代码不处理负数,算术溢出或输入错误。
您可能希望增强代码以满足这些需求。实现这样的功能将是有益的,特别是考虑到这显然是家庭作业。
这是一些测试代码:
'0'
输出:
public static void main(String[] args) {
System.out.println(getNumber("12345"));
}
答案 1 :(得分:-3)
使用Integer.parseInt(str)
。类Long
,Short
,Double
也有类似的方法。