私が使用して:"30.0"または "30.00"をどのように解析することができますか?
String str="300.0";
System.out.println(Integer.parseInt(str));
復帰例外:
例外をスレッド "メイン" java.lang.NumberFormatExceptionに:入力文字列の場合: "300.0"
どのようにすることができますこのStringをintに解析しますか?
助け:)
私が使用して:"30.0"または "30.00"をどのように解析することができますか?
String str="300.0";
System.out.println(Integer.parseInt(str));
復帰例外:
例外をスレッド "メイン" java.lang.NumberFormatExceptionに:入力文字列の場合: "300.0"
どのようにすることができますこのStringをintに解析しますか?
助け:)
:あなたは、次のコードを取得し、その文字列( "300.00"
String str = "300.0";
System.out.println((int) Double.parseDouble(str));
あなたはNumberFormatExceptionがを得た理由は単純で、浮動小数点数)は整数として解析できませんでした。
なお、この溶液も入力"300.99"
ため300
を印刷することは、言及する価値があるかもしれません。適切な丸めを取得するには、あなたが
System.out.println(Math.round(Double.parseDouble("300.99"))); // prints 301
キャストのないバージョンです:http://ideone.com/soMzL –
ニース。その方法を忘れてしまった。 – aioobe
ためのおかげであなたがdouble
最初にそれを解析し、int
にキャストする必要があります
String str="300.0";
System.out.println((int)(Double.parseDouble(str)));
あなたはしかしNumberFormatException
秒をキャッチする必要があります。
編集:修正のためのJoachim Sauerに感謝します。
Double.parseDouble()メソッドを使用すると、最初にdouble
にキャストし、次にdouble
をintにキャストして、(int)
をその前に置くことができます。ここではあなたがそれを行う方法です
String str="300.0";
System.out.println((int)Double.parseDouble(str));
Integer.parseInt()
は数が整数と同等であっても、整数(すなわち無小数点、だ文字列を取るためにを持って行うことができます。あなたがしている例外「本数は整数ですが、この文字列は整数の有効な書式ではありません」と本質的に言っています。
数値に小数成分が含まれている場合は、 Double.parseDouble()
を使用してください。これはdoubleプリミティブを返しますが、小数成分には関心がないのでuが安全だけでintにdoubleをキャストすることによって、それをドロップすることができます
int num = (int)Double.parseDouble(str);
注しかし、これは単に小数コンポーネントをドロップすること、それがすべてで数値を切り上げはありません。したがって、1.2、1.8、または1.999999をintにキャストするとすべて1になります。戻ってくる数値を丸めたい場合は、intにキャストするのではなく、Math.round()を使用します。
私は誰も言及していないと驚いていますBigDecimal。
これは実際には10進数の文字列をintに変換する最も良い方法です。
Josuha Bloch氏は、この方法をパズルラーの1つに使用することを提案しています。ここで
class Test {
public static void main(String args[]) {
try {
java.math.BigDecimal v1 = new java.math.BigDecimal("30.0");
java.math.BigDecimal v2 = new java.math.BigDecimal("30.00");
System.out.println("V1: " + v1.intValue() + " V2: " + v2.intValue());
} catch(NumberFormatException npe) {
System.err.println("Wrong format on number");
}
}
}
なぜ上で実行する例ですか? 30.0または30.00の形式のデータは、*整数ではありません。実数です。 – EJP