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;  }