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;
      }
相關文章
相關標籤/搜索