国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

表示數值的字符串

2019-11-08 03:07:44
字體:
來源:轉載
供稿:網友

題目描述

請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示數值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。

算法解析: 表示數值的字符串通常遵循以下的模式:

[sign]intergral-digits[.[fractional-digits]][e|E[sign]exponential-digits]

數值前邊可能有符號位,所以我們可以分部分匹配,首先匹配符號位,接著繼續向后匹配。

代碼如下:

public boolean isNumeric(char[] str) { if (str == null || str.length <= 0){ return false; } int[] temp = new int[1]; if (str[temp[0]] == '+' || str[temp[0]] == '-'){ ++ temp[0]; } if (temp[0] == str.length){ return false; } boolean numberic = true; scanNumber(str, temp); if (temp[0] != str.length){ if (str[temp[0]] == '.'){ ++ temp[0]; scanNumber(str, temp); if (temp[0] == str.length){ return false; } if (str[temp[0]] == 'e' || str[temp[0]] == 'E'){ numberic = isExponential(str, temp); } }else if (str[temp[0]] == 'e' || str[temp[0]] == 'E'){ numberic = isExponential(str, temp); }else{ numberic = false; } } return numberic && str.length == temp[0]; } PRivate boolean isExponential(char[] str, int[] temp) { if (str[temp[0]] != 'e' && str[temp[0]] != 'E'){ return false; } ++ temp[0]; if (temp[0] == str.length){ return false; } if (str[temp[0]] == '+' || str[temp[0]] == '-'){ ++ temp[0]; } if (temp[0] == str.length){ return false; } scanNumber(str, temp); return (temp[0] == str.length) ? true : false; } public void scanNumber(char [] chars, int[] temp){ while (temp[0] < chars.length && chars[temp[0]] >= '0' && chars[temp[0]] <= '9'){ temp[0] ++; } }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 荥阳市| 响水县| 华蓥市| 招远市| 光山县| 泾阳县| 济源市| 霍邱县| 瑞安市| 延寿县| 巨鹿县| 抚顺县| 简阳市| 略阳县| 新巴尔虎右旗| 民权县| 威海市| 万盛区| 舞阳县| 霍山县| 石狮市| 梓潼县| 桃江县| 云安县| 泉州市| 襄垣县| 岳池县| 河北省| 潮安县| 巴林右旗| 曲松县| 朝阳区| 荔浦县| 渭南市| 汨罗市| 姜堰市| 叶城县| 金寨县| 屏南县| 德阳市| 湾仔区|