• ベストアンサー

数値チェック

すみません、どなたか教えて下さい。 あるデータが数値かどうかのチェックをかけたいのですが、どのようにしたらよいでしょうか? ※数値は整数だけじゃなく、少数、負の数も存在します。 現在は下記のように、負の数だと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"; }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

単純に数値(少数と負の数を含む)のチェックであれば、parseDoubleだけでよいと思います。 Double型でなければ、すべてcatchします。 String kekka = "OK"; try { Double.parseDouble(value); } catch (Exception e) { kekka = "NG"; }

user10
質問者

お礼

ありがとうございました!! ソースもシンプルになりました!!

その他の回答 (3)

  • nimua
  • ベストアンサー率21% (8/38)
回答No.3

携帯からなので、コードは記載勘弁して下さい。 処理の流れだけ。 コード提示を希望されるなら、後ほど。 1:null、もしくは空文字  →上記条件一致=×  →上記不一致=○   2:parseDouble()実行  →Exception発生=×  →変換完了=○   3:「1~9」「.」「-」以外の文字が存在するか  →存在する=×  →存在しない=○   ×はその時点で数値でないと判断出来る条件です。 ○の場合は次の判定に進みましょう。 全て通過すれば、数値と判断していいはずです。 #2さん 他の方の回答の批評をするなら、 せめてなぜなのか書きませんか?

user10
質問者

お礼

ありがとうございました!! うまくいきました!!

noname#22239
noname#22239
回答No.2

個人レベルなら#1の回答でもいいですが、仕事で#1のコードですと40点ですね。

user10
質問者

お礼

100点or100点に近づけるにはどのようにしたらよいでしょうか?? アドバイスをお願い致します。

  • yuchi-co
  • ベストアンサー率60% (29/48)
回答No.1

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){ } }

user10
質問者

お礼

ありがとうございました!! うまく判別できた上にコードもシンプルになり、とても助かりました。

関連するQ&A