请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
做的很无语。。。毫无数据结构和算法而言
public class Solution {
public static boolean isNumeric(char[] str) {
int i=0;
if(str[i]=='+'||str[i]=='-'||IsNum(str[i]))
{
i++;
while(i<str.length)
{
if(IsNum(str[i])) i++;
else break;
}
if(i==str.length) return true;
else if(str[i]=='.')
{
if(++i==str.length) return true;
else if(IsNum(str[i]))
{
i++;
while(i<str.length)
{
if(IsNum(str[i])) i++;
else break;
}
if(i==str.length) return true;
else if(str[i]=='e'||str[i]=='E')
{
i++;
if(str[i]=='+'||str[i]=='-'||IsNum(str[i]))
{
i++;
while(i<str.length)
{
if(IsNum(str[i])) i++;
else break;
}
if(i==str.length) return true;
else return false;
}
else return false;
}
else return false;
}
else return false;
}
else if(str[i]=='e'||str[i]=='E')
{
if(++i==str.length) return false;
else if(str[i]=='+'||str[i]=='-'||IsNum(str[i]))
{
i++;
while(i<str.length)
{
if(IsNum(str[i])) i++;
else break;
}
if(i==str.length) return true;
else return false;
}
else return false;
}
else return false;
}
else
{
return false;
}
}
public static boolean IsNum(char ch)
{
if(ch<'0'||ch>'9') return false;
else return true;
}
}