【发布时间】:2015-01-30 04:33:48
【问题描述】:
最近面试被问到这个问题(Java编程题)
- 从随机字符串中返回所有整数的总和。连续整数必须被视为一个数字。
- 如果输入字符串没有整数,则返回0。
- 您可以忽略小数、浮点数和其他非整数
- @param str : 输入字符串
- 鉴于以下输入,我们期望得到相应的输出:
- "-1a2b3c" => 4 (-1+2+3)
- "123ab!45c" => 168 (123+45)
- "abcdef" => 0(字符串中没有整数)
- "0123.4" => 127 (0123+4)
- "dFD$#23+++12@#T1234;/.,10" => 1279 (23+12+1234+10)
我也被允许使用任何内置函数
我编写了这段代码,但是这似乎有点复杂。这段代码可以用其他方式完成吗?
public int convertString(String str){
int num=0, currNo = 0;
Boolean isNegative = false;
for (int i=0 ; i<str.length(); i++){
Char t = str.charAt(i) ;
if(t == ‘-‘){
if(isNegative)
num = num-currNo;
else
num = num + currNo;
isNegative=true;
currNo=0;
}
else if(((t-‘0’) <= 9 && (t-‘0’)>=0)){
currNo = (currNo*10) + t;
}
else {
if(isNegative)
num = num-currNo;
else
num = num + currNo;
currNo=0;
isNegative=false;
}
}
if(isNegative)
num = num-currNo;
else
num = num + currNo;
isNegative=true;
return num;
}
【问题讨论】:
-
您似乎已将您的代码通过文字处理器,将您的单引号更改为卷曲的 unicode 怪异。此外,您的缩进完全搞砸了。
-
我投票结束这个问题,因为它是一个代码审查,属于 codereview.stackexchange.com
标签: java