csvファイルを取込み、内容が数値であるかをチェックする際、
if (!(NumberUtils.isNumber(line) && NumberUtils.isDigits(line))) {
// エラー出力
}
というif文を作って数値として認識できないものがあればエラー表示をしようとしています。
"011"や"063"などの文字列はこのifに引っかからずエラーとならなかったのですが、なぜか"068"、"084"など一部の値はこのチェックに漏れてエラーとなってしまいました。
これらの違いはなんなのでしょうか?isNumberとisDigitsについて検索してみましたが詳細なことは今一つわからず。。。
関係あるかは不明ですが、csvの文字コードはSJISです。
追記
お二人ともありがとうございます。0始まりだとisNumberが8進数として見てしまうのは知りませんでした。
実装したいのは0開始を許可した半角数字のみの数値であるチェックです。+や-、小数点やスペースなどが入っていればエラーとしたいと思っています。
isDigitsについて調べたところ全角数字も許可してしまうようなので、いっそNumberUtilsは使わず正規表現^[0-9]*$あたりでチェックしようかと思います。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。