2012-03-14 3 views
3

文字列 "a23"から23を取得する必要があります。以下のプログラムを実行すると、以下のエラーが発生します。この場合には、整数 - ここ文字列を数値に変換する - NumberFormatException

public class GetIntFromString { 

    public static void main(String[] args) { 

     String str = "a23"; 

     int i = Integer.parseInt(str); 

     System.out.println("Integer value= "+i); 

     System.out.println("value= "+str); 

    } 
} 

はparseXXX()メソッドは、要求されているタイプに忠実でない文字列を受け入れないスタックトレース

Exception in thread "main" java.lang.NumberFormatException: For Input String: "a23" 

at java.lang.NumberFormatException.forInputString<NumberFormatException.java.48> 
at java.lang.Integer.ParseInt<Integer.java.449> 
at java.lang.Integer.ParseInt<Integer.java.499> 
at GetIntFromString.main<GetIntFromString.java.9> 
+1

最初にいくつかの研究を行いますが、それは非常に簡単です。 Integer.parseIntは英数字文字列では機能しません。文字列から数字部分を抽出し、Integer.parseIntメソッドに渡す必要があります。 –

答えて

2

です。実際の数字部分を手作業で(あるいはおそらく正規表現を使って)見つけるテクニックを見つけなければならないでしょう。

2

あなたの接頭文字のみを以下

int i = Integer.parseInt(str.substring(1)); 

を試行し、常に1つの文字になるだろうもしそうでなければ、あなたはメソッドの構文解析のparseInt

0

を呼び出す前に、数値部分を把握する方法が必要になります文字列形式の数字のみ。それ以外の場合は、NumberFormatExceptionがスローされます。

4

だけで任意の数字以外の文字を削除;)

System.out.println("Integer value= "+str.replaceAll("[^0-9]","")); 
1

あなたはすべての非数値文字を削除するには、strの上でReplaceAllを呼び出す必要があります。 Parseintは、純粋な数値文字列のみを受け入れます。

関連する問題