20. 示意数值的字符串
思路一:try catch
应用库函数,String 转 Double,不能转就返回 false
-
String 转 Double 的办法:
Double.parseDouble(s);
-
try catch 的格局
try{}catch(Exception e){}
- 前面有 f,d 示意 float,double 的,在本题中应返回 false
操作:
思路二:
- 次要思路:将字符串按 E 分为前后两段,前段判断是否为 数,后段判断是否为 整数。
- 判断该段字符串是否为 数:将该段字符串按 小数点 分为 前后两段 ,判断前后两段是否为 整数。
- 判断该字符串是否为 整数:遍历该字符串,是否有大于 ’0′, 小于‘9’, 的字符。
操作细节:
-
删空格
String trim()
返回一个字符串,它的值是字符串,任何前导和尾随空格删除。
-
分段
String substring()
具体看 17. 打印从 1 到最大的 n 位数
-
字符串的首位、末位
char endwith()
-
是否含有某字符
boolean contains()
-
某字符的地位
int indexOf()
-
字符串在某地位的字符值
char charAt()
操作
public boolean isNumber(String s) {s = s.trim(); if (s.length()==0) return false;// if (s.startsWith("+") || s.startsWith("-")) s = s.substring(1); s = s.replace("E", "e"); if (s.contains("e")) {String firstString = s.substring(0, s.indexOf("e")); String secondString = s.substring(s.indexOf("e") + 1); if (secondString.startsWith("+") || secondString.startsWith("-")) secondString = secondString.substring(1); return trueNumber(firstString) & intNumber(secondString); } return trueNumber(s); } public boolean trueNumber(String s) {if (s.contains(".")) {String firstString = s.substring(0, s.indexOf(".")); String secondString = s.substring(s.indexOf(".") + 1); if (firstString.length() == 0) return intNumber(secondString); if (secondString.length() == 0) return intNumber(firstString); return intNumber(firstString) & intNumber(secondString); } } public boolean intNumber(String s) {if (s.length() == 0) return false;// char[] cs = s.toCharArray(); for (char c : cs) {if (c < '0' || c > '9') return false; } return true; }