2012-01-18 10 views
-2

私は次のようなテキストを持っています:function 23 34 56そして23,34、および56を数字として抽出する必要があります。だから、私は次のように書く:parseInt crashing

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

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

トークンの長さを調べようとしました...文字列 "func 23 34 56"の場合は4になります...スローされた例外は "numberformatexceptio"です... parseInt行をコメントアウトすると、クラッシュ...私は何が間違っているのか分からない... plse help(Android 2.1)

誰もが正規表現を使用してデータをキャプチャするコードを投稿することができます、それはあまりにも役に立つでしょう... thnx ..

+1

どうしますか? – Joe

+0

エラーメッセージを知る必要があります。エラーの原因となるこのコードの断片には何も表示されません。 – Steven

+0

stacktraceをポストし、 'tokens [1]'の値をロギングしてみてください。 –

答えて

-1

使用

int[] num=new int[tokens.length]; 
for(int i=0;i<tokens.length;i++) 
{ 
    num[i] = Integer.parseInt(tokens[i]); 
} 
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))); 
} 
+0

thnks henrik for the regex :) ... parseIntはまだクラッシュを引き起こします...コードはスムーズに動作します!! – user1155386