2010-11-26 19 views
0

大きな10進数では問題に直面しています。次のコードスニペットで私の問題について説明します:大10進解析問題

BigDecimal parsedValue = (BigDecimal) decimalFormat.parse(input); 

ここでの入力は文字列型です。入力の値が135abc24であるとします。この場合、parsedValueの値はですが、そのような入力を確認して、文字列と残りの部分を切り捨てる代わりにエラーを出したいと思います。ちょうど入力文字列を追加したいだけでなく、指数nosを含むかもしれないので、私も数字の文字列をチェックすることはできません。詳しい情報が必要な場合や質問が明確でない場合はお知らせください。

ありがとうございます。

答えて

6

BigDecimalのString constructorを使用して、BigDecimalを作成し(詳細はリンクを参照)、必要な変換を入力文字列に適用することができます。入力が有効な表現でない場合、コンストラクタはNumberFormatExceptionをスローします。

+0

こんにちはジェンス、あなたの返事をありがとう。希望の結果を得ました。投票することを望んだが、評判は15ではない:(とにかくたくさんありがとう) – Harmit

+0

あなたは大歓迎です。 –

2

documentationによれば、DecimalFormat.parse()は、解析が停止した位置で更新されParsePosition参照、の形態の第2引数をサポートします。それを文字列の先頭と比較し、文字列全体が受け入れられたかどうかを判断できます。

+0

こんにちは、お返事ありがとうございます。私はこのオプションを試しませんでしたが、私はJensの答えで希望の結果を得ました。しかし、私はこれを試してみて、ここで間違いなく更新します。ありがとう! – Harmit

+0

それは問題を解決する別のオプションです。古い質問を行っていたnは私のコメントを見つけた。遅くなく良いより:) – Harmit