您的位置:首页 > Web前端

【剑指Offer】54、表示数值的字符串

2020-03-31 19:41 676 查看

题目描述

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

题解一:库函数
1  /**
2      *parseDouble()与valueOf()均可
3      */
4     public static boolean isNumeric(char[] str) {
5         try {
6             double re = Double.parseDouble(new String(str));
7             double re1 = Double.valueOf(new String(str));
8         } catch (NumberFormatException e) {
9             return false;
10         }
11         return true;
12     }
题解二:正则表达式
1 //正则表达式
2     public static boolean isNumeric01(char[] str) {
3         String res = String.valueOf(str);
4         return res.matches("[+-]?[0-9]{0,}(\\.?[0-9]{1,})?([Ee][+-]?[0-9]{1,})?");
5     }

测试:

1 public static void main(String[] args) {
2         Scanner scanner = new Scanner(System.in);
3         while (scanner.hasNext()){
4             String str = scanner.nextLine();
5             char[] chars = str.toCharArray();
6             boolean numeric = isNumeric(chars);
7             System.out.println(numeric);
8         }
9 输出:
10       /**+100
11         true
12         "5e2"
13         false
14         5e2
15         true
16         -123
17         true
18         1a3.14
19         false
20         12e+4.3
21         false*/

 

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Blog_pc 发布了66 篇原创文章 · 获赞 0 · 访问量 288 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: