0

私はこれがここでよくある質問であることを知っています。私は解決策を読み、コードを変更しましたが、解決策が得られないので、ここにコードを投稿しました。

テキストボックスから値を読み取り、サーブレットの文字列からintに値を解析すると、NumberFormatExceptionが表示されるのはなぜですか?

  String ph=request.getParameter("phone");
  int phone=Integer.parseInt(ph.trim());// exception is generated here
4

3 に答える 3

2

intに文字や記号を含めることはできず、intの最大サイズは2,147,483,647です。これは、電話番号5555555555がintに格納するには大きすぎることを意味します。

解析をlongに変更すると、問題が修正されるはずです

従うべき良いルールは、SSNや電話番号のような番号を数値プリミティブに保存しないことです。数学に関連する何かを行うことを計画している値の数値プリミティブを残したいとします。可能な限り、それらを文字列として保持します。

于 2013-01-29T20:39:52.413 に答える
1

フィードしている値は有効な整数ではないためです。奇妙な文字が含まれていないことを確認してください。

9835008199MAXINTよりも高いので、おそらくそれです。

ドキュメントは私に教えてくれます:

NumberFormatExceptionをスローします-文字列に解析可能な整数が含まれていない場合。

別の注意点:電話番号を整数として保存しないでください。あなたはトラブルに巻き込まれるでしょう(あなたは実際にはすでにです)。経験則:数値を使って数学をしたくない場合、それはでintはなく、stringです。

于 2013-01-29T20:36:17.423 に答える
0

isNumber関数を使用して、それが有効な番号であるかどうかを確認します。

于 2013-01-29T20:43:30.283 に答える