-3

私の問題は、浮動小数点数を受け入れないコードにあるので、コード部分を変更する必要があります.plsは私に提案します..

{ スレッド "main" での例外 java.lang.NumberFormatException: For input string: "320.9"

at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at org.lrap.otc.OTCVerification.verifyOtc(OTCVerification.java:26)

//コード部分//int bill=Integer.parseInt(strArray[2].trim());

at org.lrap.main.Main.run(Main.java:68)

//コード部分//boolean retVal=OTCVerification.getOTCVerificationObj().verifyOtc(メッセージ);

at org.lrap.main.Main.main(Main.java:111)

run 関数を呼び出すだけです } 私を助けてくれたすべての人に感謝します。:-)

4

4 に答える 4

1

入力文字列の場合: "320.9"

java.lang で。Integer.parseInt (不明なソース)

Double.parseDouble分数で数値を解析するために使用します。違いInteger.parseIntます。

入力が機械でフォーマットされた数値ではない可能性がある場合はDecimalFormat.parse、適切な Locale を使用して、ローカルの規則 (ヨーロッパの一部では 320,9 など) を使用してフォーマットされた数値を認識する必要があります。

于 2013-04-03T07:27:20.437 に答える
0

浮動小数点数が必要な場合は、Double.parseDoubleまたはを使用しますnew BigDecimal

double target = Double.parseDouble(theString);
// Or
BigDecimal target = new BigDecimal(theString);

整数が必要な場合は、 を使用String#indexOfして を検索し.、 を使用String#substringして の前の数字のみを取得し.、引き続き を使用しInteger.parseIntます。

int index = theString.indexOf('.');
if (index >= 0) {
    theString = theString.substring(0, index);
}
int target = Integer.parseInt(theString);

または、Mike Samuelが以下のコメントで指摘しているように、 を使用Double.parseDoubleしてからキャストしintます。

int target = (int)Double.parseDouble(theString);
于 2013-04-03T07:27:46.233 に答える
0
Integer.parseInt(String s) 

有効な文字列を整数に変換するために使用されます。値は -2,147,483,648 から 2,147,483,647 の間である必要があります。浮動小数点数は受け入れません。

浮動小数点に変換するには、使用できますDouble.parseDouble or new BigDecimal.

于 2013-04-03T07:32:03.863 に答える
0

「浮動小数点数」を変換するには、使用されているNumberFormat. 文字列「320.9」を変換する場合、ほとんどのロケールで問題ありません。プログラムが「フレンチ」マシンで実行されている場合、浮動小数点数は「320,9」となる可能性があります。

Double.parse は "." でのみ機能します。区切り文字として (正確には、sun.misc.FloatingDecimal.readJavaFormatString(String in) に依存します)。したがって、その区切り文字があることに依存できる場合は、問題ありませんDouble.parse

両方のケースに対処する必要がある場合は、次のようなものを使用できます。

final String num = "320,9";
final NumberFormat nf_french = NumberFormat.getInstance(Locale.FRENCH); // French Number Format (= xxx,yyy) 
final double result_french = nf_french.parse(num).doubleValue(); // => 320.9
final NumberFormat nf_us = NumberFormat.getInstance(Locale.US); // US Number Format (= xxx.yyy) 
final double result_us = nf_us.parse(num).doubleValue(); // => 3209.0 !!
于 2013-04-03T10:07:33.930 に答える