# 剑指offer第二版-20.表示数字的字符串

``````package chapter3;
/**
* Created by ryder on 2017/7/13.
* 表示数值的字符串
*/
public class P127_NumberStrings {
public static boolean isNumeric(String str){
//正确的形式：A[.[B]][e|EC] 或者 .B[e|EC];
if(str==null||str.length()==0)
return false;
int index;
if(str.charAt(0)!='.'){
index = scanInteger(str,0);
if(index==-1)
return false;
if(index==str.length())
return true;
if(str.charAt(index)=='.'){
if(index==str.length()-1)
return true;
index = scanInteger(str,index+1);
if(index==str.length())
return true;
}
if(str.charAt(index)=='e'||str.charAt(index)=='E'){
index = scanInteger(str,index+1);
if(index==str.length())
return true;
else
return false;
}
return false;
}
else{
index = scanInteger(str,1);
if(index==-1)
return false;
if(index==str.length())
return true;
if(str.charAt(index)=='e'||str.charAt(index)=='E'){
index = scanInteger(str,index+1);
if(index==str.length())
return true;
}
return false;

}

}
public static int scanInteger(String str,Integer index){
if(index>=str.length())
return -1;
if(str.charAt(index)=='+'||str.charAt(index)=='-')
return scanUnsignedInteger(str,index+1);
else
return scanUnsignedInteger(str,index);
}
public static int scanUnsignedInteger(String str,Integer index){
int origin = index;
while(str.charAt(index)>='0'&&str.charAt(index)<='9'){
index++;
if(index==str.length())
return index;
}
if(origin==index)
index = -1;
return index;
}
public static void main(String[] args){
System.out.println(isNumeric("+100"));//true
System.out.println(isNumeric("5e2")); //true
System.out.println(isNumeric("-123"));//true
System.out.println(isNumeric("3.1416"));//true
System.out.println(isNumeric("-1E-16"));//true
System.out.println(isNumeric(".6"));//true
System.out.println(isNumeric("6."));//true
System.out.println(isNumeric("12e"));//false
System.out.println(isNumeric("1a3.14"));//false
System.out.println(isNumeric("1.2.3"));//false
System.out.println(isNumeric("+-5"));//false
System.out.println(isNumeric("12e+5.4"));//false
}
}
``````

``````true
true
false
false
``````

### 推荐阅读更多精彩内容

• 在挖掘分析的过程当中对字符串的处理是极为重要的，且出现也较为频繁，R语言作为当前最为流行的开源数据分析和可视化平台...
Crazy_Rabbit阅读 3,418评论 0 4
• 【1】7，9，-1，5，( ) A、4；B、2；C、-1；D、-3 分析:选D，7+9=16；9+（-1）=8；（...
Alex_bingo阅读 9,012评论 0 16
• 1. Java基础部分 基础部分的顺序：基本语法，类相关的语法，内部类的语法，继承相关的语法，异常的语法，线程的语...
子非鱼_t_阅读 25,875评论 18 394
• 村上春树说：没有小确幸的人生，不过是干巴巴的沙漠罢了。 如今我们的生活中，经常会提到小确幸这个词，那你对于小确幸，...
王子月阅读 217评论 0 0
• 传说很久以前，沙漠里有个国家，国王有两个儿子，老大为人狡猾，对臣民刻薄吝啬，对国王阿谀奉承，是个贪图享受、无恶不作...
彦子八毛话图阅读 129评论 0 0