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()
字符串的首位、末位
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; }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。