3

文字列「a23」から23番を取得する必要があります。以下のプログラムを実行すると、以下のエラーが表示されます。

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);

    }
}

ここにスタックトレースがあります

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>
4

5 に答える 5

4

数字以外の文字を削除するだけです;)

System.out.println("Integer value= "+str.replaceAll("[^0-9]","")); 
于 2012-03-25T18:25:54.840 に答える
2

parseXXX() メソッドは、要求されている型 (この場合は整数) に当てはまらない文字列を受け入れません。実際の数値部分を手動で (または正規表現を使用して) 見つける方法を考え出す必要があります。

于 2012-03-14T08:32:28.150 に答える
2

プレフィックス文字が常に1文字になる場合は、次のことを試してください

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

それ以外の場合は、parseInt を呼び出す前に数値部分を把握する方法が必要です。

于 2012-03-14T08:33:45.177 に答える
1

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

于 2012-03-25T18:28:58.223 に答える
0

解析メソッドは、文字列形式の数値のみを取ります。それ以外の場合は、NumberFormatException がスローされます。

于 2012-03-14T09:38:30.747 に答える