面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); } }