- ベストアンサー
数値チェック
すみません、どなたか教えて下さい。 あるデータが数値かどうかのチェックをかけたいのですが、どのようにしたらよいでしょうか? ※数値は整数だけじゃなく、少数、負の数も存在します。 現在は下記のように、負の数だとNGになってしまいます。 String kekka = "OK"; int intChk = 0; for (int i = 0; i < value.length(); i++) { char c = editvalue.charAt(i); char c1 = '0'; char c2 = '9'; if ((c < c1 || c > c2) && ( c!='.') ) { intChk = intChk + 1; } } if (intChk == 1){ kekka="NG"; }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
単純に数値(少数と負の数を含む)のチェックであれば、parseDoubleだけでよいと思います。 Double型でなければ、すべてcatchします。 String kekka = "OK"; try { Double.parseDouble(value); } catch (Exception e) { kekka = "NG"; }
その他の回答 (3)
- nimua
- ベストアンサー率21% (8/38)
携帯からなので、コードは記載勘弁して下さい。 処理の流れだけ。 コード提示を希望されるなら、後ほど。 1:null、もしくは空文字 →上記条件一致=× →上記不一致=○ 2:parseDouble()実行 →Exception発生=× →変換完了=○ 3:「1~9」「.」「-」以外の文字が存在するか →存在する=× →存在しない=○ ×はその時点で数値でないと判断出来る条件です。 ○の場合は次の判定に進みましょう。 全て通過すれば、数値と判断していいはずです。 #2さん 他の方の回答の批評をするなら、 せめてなぜなのか書きませんか?
お礼
ありがとうございました!! うまくいきました!!
個人レベルなら#1の回答でもいいですが、仕事で#1のコードですと40点ですね。
お礼
100点or100点に近づけるにはどのようにしたらよいでしょうか?? アドバイスをお願い致します。
- yuchi-co
- ベストアンサー率60% (29/48)
editvalue が判別したい文字列ですよね・・・。 以下のようにすればできると思います。 int型かどうか判別、変換が成功すればkekkaをOKに書き換え、変換できなければcatch節に飛びます。 で、doubleかどうか判別、上記と同様、変換が成功すればkekkaをOKに書き換え、変換できなければNGのままです。 String kekka = "OK"; try{ Integer.parseInt(editvalue);//intかどうか判定 kekka = "OK"; }catch(NumberFormatException e){ try{ Double.parseDouble(editvalue);//doubleかどうか判定 kekka = "OK"; }catch(NumberFormatException ee){ } }
お礼
ありがとうございました!! うまく判別できた上にコードもシンプルになり、とても助かりました。
お礼
ありがとうございました!! ソースもシンプルになりました!!