20. 表示数值的字符串,try catch,多条件字符串

20. 表示数值的字符串

image.png

思路一:try catch

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

  • String转Double的方法:函数

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

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

操做:

image.png

思路二:

  • 主要思路:将字符串按E分为先后两段,前段判断是否为,后段判断是否为整数
  • 判断该段字符串是否为: 将该段字符串按小数点分为先后两段,判断先后两段是否为整数
  • 判断该字符串是否为整数: 遍历该字符串,是否有大于'0',小于‘9’,的字符。

操做细节:

  • 删空格
    String trim()
    返回一个字符串,它的值是字符串,任何前导和尾随空格删除。
  • 分段
    String substring()
    具体看17. 打印从1到最大的n位数
  • 字符串的首位、末位
    char startWith()
    char endwith()
  • 是否含有某字符
    boolean contains()code

    操做

    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;
      }
相关文章
相关标签/搜索