-2

関数 23 34 56 のようなテキストがあり、23、34、および 56 を数値として抽出する必要があります。だから私は次のようなものを書きます:

 String s = "function 2 3 4";
 String[] tokens = (s.trim()).split(" ");
 int num1 = Integer.parseInt(tokens[1]); 

ここでアプリがクラッシュします。エラーはどこにありますか?

トークンの長さを見つけようとしました... 4になることがわかりました(文字列「func 23 34 56」の場合)...スローされる例外は「numberformatexceptio」です... parseInt行をコメントアウトすると、クラッシュが防止されます...何が問題なのかわかりません...助けてください(Android 2.1)

誰かが正規表現を使用してデータをキャプチャするコードを投稿できる場合は、それも役に立ちます...thnx ..

4

2 に答える 2

1

あなたが投稿したコードは正常に動作します。それにもかかわらず、ここに正規表現ソリューションがあります:

String s = "function 2 3 4";
Pattern p = Pattern.compile("function\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)");
Matcher m = p.matcher(s);
if (m.matches()) {
    System.out.println(Integer.parseInt(m.group(1)));
    System.out.println(Integer.parseInt(m.group(2)));
    System.out.println(Integer.parseInt(m.group(3)));
}
于 2012-01-18T14:29:22.033 に答える
-1

使用する

int[] num=new int[tokens.length];
for(int i=0;i<tokens.length;i++)
{
   num[i] = Integer.parseInt(tokens[i]);
}
于 2012-01-18T04:47:32.267 に答える