質問: val.replace(",", ""); System.out.println("変換します:"+ val); } // 空白処理 if (val.equals(val.trim())) { System.out.println("空白処理しました"); } return false; } } ``` ``` // 正の整数とカンマ以外は認めない private static boolean isNotNaturalNumber(String val ) { assert val != null; if (!(val.matches("0|^[1-9]\\d*|^[1-9]\\d{0,2}((,\\d{3})*)$"))) { return true; } else { System.out.println("ok"); } // 空白処理 if (val.equals(val.trim())) { System.out.println("空白処理しました"); } return false; } ``` ### 補足情報(言語/FW/ツール等のバージョンなど) java 環境 eclips Oxygen.1a Release (4.7.1a)
回答: エラーは適当に出すのではなく、処理できないデータの場合に出しましょう。 入力されたデータは文字列のままで扱うのですか? 数値に直すのではありませんか? それならばデータを数値に直すメソッドをまず作り、検証にも同じ物を使えばデータの検証と変換で齟齬が生じなくていいと思います。 ``` public static Integer valueOfCurrency(String s) { Integer result = Integer.valueOf(s.replaceAll("[\\s,]", "")); if (result < 0) throw new IllegalArgumentException(); return result; } ```