タイトル説明
文字列が(整数および端数を含む)の値を表しているかどうかを決定するために使用される機能を実現します。例えば、文字列 "100"、 "5E2"、 " - 123"、 "3.1416" および "-1E-16" の値を示しています。しかし、 "12E"、 "1a3.14"、 "1.2.3"、 "+ - 5" と "12E + 4.3" もありません。
トピックリンク:
パッケージcom.sunshine.OFFER66_SECOND; 輸入org.junit.Test; パブリック クラスA53_isNumeric { @テスト 公共 ボイド試験(){ 文字列の番号 =「5E2」。 文字列[]番号 = { "+100"、 "5E2"、 "-123"、 "3.1416"、 "-1E-16" }。 用(文字列S:数字){ ブーリアン数値= isNumeric2(s.toCharArray())。 System.out.println(数値); } System.out.println(); 文字列[] numbers2 = { "12E"、 "1a3.14"、 "1.2.3"、 "+ -5"、 "12E + 4.3" }。 用(文字列S:numbers2){ ブーリアン数値= isNumeric2(s.toCharArray())。 System.out.println(数値); } } パブリック ブール ISNUMERIC(CHAR [] STR){ int型 PM1 = 1 。 int型 PM2 = 1 ; ブール E = 偽; int型ポイント= -1 ; int型の A = 0 ; ダブル B = 0 ; int型の C = 0 ; 以下のために(int型 i = 0; I <str.length; iは++ ){ 場合(STR [I] == '+' ){ 場合(I == 0 ){ PM1 = 1 。 } そう なら(I - 1> = 0 &&(STR [I - 1] == 'E' || STR [I - 1] == 'E' )){ PM2 = 1 。 } 他{ 戻り 偽。 } } そう であれば(STR [I] == ' - ' ){ 場合(I == 0 ){ PM1 = -1 ; } そう なら(I - 1> = 0 &&(STR [I - 1] == 'E' || STR [I - 1] == 'E' )){ PM2 = -1 ; } 他{ 戻り 偽。 } } そうで あれば(STR [I] == 'E' || STR [I] == 'E' ){ E = 真; もし - (1 I == str.length ){ 戻り 偽。 } } そう であれば(!{e)の 場合(STR [I] == '' ){ 場合(点= -1!{) を返す 偽。 } ポイント = I; } そう であれば(点!= -1 ){ 場合(STR [I]> = '0' && STR [I] <= '9' ){ A = A * 10 + STR [I] - '0' 。 } 他{ 戻り 偽。 } } 他{ 場合(STR [I]> = '0' && STR [I] <= '9' ){ B + =(STR [I] - '0')* 1.0 /((I -ポイント)* 10 )。 } 他{ 戻り 偽。 } } } 他{ 場合(STR [I]> = '0' && STR [I] <= '9' ){ C = C * 10 + STR [I] - '0' 。 } 他{ 戻り 偽。 } } } 返す 真; } // 他の最適解 パブリック ブール isNumeric2(CHAR [] STR){ ストリングストリング = String.valueOf(STR)。 戻り( "[\\ + \\ - ] \\ D *(\\ \\ D +)([EE] [\\ + \\ - ] \\ D +)????" string.matchesを) } / ** * [+ \\ \\ - ] - ?正負の>有無 * \\ D * - >整数部分が表示され、のような-.34または3.34準拠 *(\\ \\ D +。) - >小数点が表示された場合は、小数点以下の数字が持っている必要があります?; *それ以外の場合は、一緒に表示されません。 *([EE] [\\ + \\ - ] \\ D +?) - ?指数部が存在する場合>、eまたはEは確か+、表示されたか - が発生しないことがあり、 *そして、あなたは整数に従わなければなりません。全部または一部が表示されません。 * / }