题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
/*
* 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
* 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。
* 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
*/
public class isNumeric1 {
public static boolean isNumeric(char[] str) {
if(str==null||str.length==0){
return false;
}
int index=0;
if(str[index]=='+'||str[index]=='-'){
index++;
}
if(index==str.length){//只有符号为位返回假
return false;
}
index=scanDigit(str,index);
if(index<str.length){
if(str[index]=='.'){
index++;
index=scanDigit(str,index);
if(index<str.length){
if(str[index]=='e'||str[index]=='E'){
index++;
return isExponent(str,index);
}
return false;
}
return true;
}else if(str[index]=='e'||str[index]=='E'){
index++;
return isExponent(str,index);
}
return false;
}
return true;
}
private static boolean isExponent(char[] str, int index) {
if(index<str.length){
if(str[index]=='+'||str[index]=='-'){
index++;
}
index=scanDigit(str,index);
if(index==str.length) return true;
return false;
}
return false;
}
private static int scanDigit(char[] str, int index) {
while(index<str.length&&str[index]>='0'&&str[index]<='9'){
index++;
}
return index;
}
public static void main(String[] args) {
char [] c={'5','e','2'};
System.out.println(isNumeric(c));
}
}