0

次のコードを使用して、文字列配列内にある 9s や 4c などの文字列値を取得し、最初の文字の整数値だけを見つけます。また、10 や 13c のような複数の数字を含む文字列値にもこれを使用できるようにしたいと考えています。

total = total + Integer.parseInt(a[i].substring(0)) + 1;

これにより、数値形式の例外が発生します。私が間違っているかもしれないアイデアはありますか?

4

4 に答える 4

5

これはうまくいきます

public static void getIntVal()  {
    String text = "123cc";
    String numOnly = text.replaceAll("\\D+", "");
    int numVal = Integer.valueOf(numOnly);
    System.out.println(numVal);
}

ダブルとして使用したい場合は、次のようにできます

    String text = "123.0114cc";
    String numOnly = text.replaceAll("\\p{Alpha}","");
    double numVal = Double.valueOf(numOnly);
    System.out.println(numVal);
于 2013-06-25T12:31:29.430 に答える
4

str.substring(0)str再びです(ドキュメントを読んでください)。あなたはおそらく探している

a[i].substring(0, a[i].length() - 1)  // cuts off last character
于 2013-06-25T12:26:47.607 に答える
1

Ruchira のソリューションでは、数字以外の文字を削除することが規定されています。あなたの設定では正しいようです。ただし、数値が浮動小数点数または倍精度浮動小数点数である場合、彼女の解決策は無効ですshreyansh jogi

ルチラの思考ソリューションを適切に実装すると、これで問題が解決します...

String text = "123.0121cc";
String numOnly = text.replaceAll("\\p{Alpha}", "");

何を期待すべきかわかっている場合は、次のように言いますdouble。 double numVal = Double.valueOf(numOnly); System.out.println(numVal);

integerそれ以外の場合..テキストの残りの部分がまたはであるかどうかがわからない場合は、次のdoubleことが役立ちます。

if(numOnly.contains(".")) {
    double numVal = Double.valueOf(numOnly);
    System.out.println(numVal);
} else {
    int numVal = Integer.valueOf(numOnly);
    System.out.println(numVal);
}
于 2013-07-02T18:42:00.513 に答える
0
total = total + Integer.parseInt(a[i].substring(0,a[i].length()-1));
于 2013-06-25T12:28:45.220 に答える