题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串\"+100\",“5e2”,\"-123\",“3.1416\"和”-1E-16\"都表示数值。 但是\"12e\",“1a3.14”,“1.2.3”,\"±5\"和\"12e+4.3\"都不是。
代码
public class Solution53 {
public boolean isNumeric(char[] str) {
if (null == str || str.length == 0)
return false;
// 标记符号、小数点、e是否出现过
boolean sign = false, decimal = false, hasE = false;
for (int i = 0; i < str.length; i++) {
if (str[i] == \'e\' || str[i] == \'E\') {
if (i == str.length - 1) return false; // e后面一定要接数字
if (hasE) return false; // 不能同时存在两个e
hasE = true;
} else if (str[i] == \'+\' || str[i] == \'-\') {
// 第二次出现+-符号,则必须紧接在e之后
if (sign && str[i - 1] != \'e\' && str[i - 1] != \'E\') return false;
// 第一次出现+-符号,且不是在字符串开头,则也必须紧接在e之后
if (!sign && i > 0 && str[i - 1] != \'e\' && str[i - 1] != \'E\') return false;
sign = true;
} else if (str[i] == \'.\') {
// e后面不能接小数点,小数点不能出现两次
if (hasE || decimal) return false;
decimal = true;
} else if (str[i] < \'0\' || str[i] > \'9\') // 不合法字符
return false;
}
return true;
}
public static void main(String[] args) {
BeanUtil.print(new Solution53().isNumeric(\"31.21e9\".toCharArray()));
}
}
继续阅读与本文标签相同的文章
上一篇 :
python BeautifulSoup乱码问题
下一篇 :
智能化、个性设计、文创产品销售额增长迅速
-
SpaceX计划再发射3万颗卫星 地球卫星总数将提5倍
2026-05-18栏目: 教程
-
觉非科技:专注于提供自动驾驶决策地图与服务
2026-05-18栏目: 教程
-
五大常用算法:回溯法
2026-05-18栏目: 教程
-
家电运输物流管理信息软件
2026-05-18栏目: 教程
-
Windows 10累积更新导致经典版Edge无法打开 微软承诺月底前修复
2026-05-18栏目: 教程
