面360的时候这道题目加了一个要求就是要求小数输出整数,故增加一个关于小数点的判断
要注意转义字符:“.”和“|”都是转义字符,必须得加"\\"。同理:*和+也是如此的。
如果用“.”作为分隔的话,必须是如下写法:
String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
如果用“|”作为分隔的话,必须是如下写法:
String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
public class Solution49 {
public static void main(String[] args) {
String str = "-12345.8";
System.out.println(StrToInt(str));
} public static int StrToInt(String str) {
//1.字符串为空
if (str.trim().length()==0||str == null) {
return 0;
}
//2.判断是否为负数
int flag = 1;
if (str.charAt(0)=='-') {
flag = -1;
}
//4.如果遇到小数点
if (str.contains(".")) {
if (str.indexOf(".")!=str.lastIndexOf(".")) {
return 0 ;
}
String[] split = str.split("\\.");
str = split[0];
}
//3.开始循环遍历这个字符串
int res = 0;
for (int i = 0; i < str.length(); i++) {
char everyWord = str.charAt(i);
//符号位
if (i==0 && (everyWord=='+'||everyWord=='-')) {
continue;
}
//非法输入
if (everyWord<'0'||everyWord>'9') {
return 0;
}
//合法输入,取出一位,如果后面还有数字就左移(*10)
res = res*10 + everyWord-'0';
}
return (res*flag);
}
}