20. 表示数值的字符串

image.png

思路一:try catch

使用库函数,String转Double,不能转就返回false

  • String转Double的方法:

     Double.parseDouble(s);
  • try catch的格式

      try{
      
      }catch(Exception e){
      
      }
  • 后面有f,d表示float,double的,在本题中应返回false

操作:

image.png

思路二:

  • 主要思路:将字符串按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;
      }

MeeWoW
18 声望1 粉丝

加油