2012-01-19 15 views
0

文字列の配列を分割し、それを小さな文字列に保存する必要があります。 PlzはここJava文字列分割エラー

public static ArrayList<String> suburl = new ArrayList<String>(); 

どこ

for(int i=0; i<suburl.size(); i++){ 

     String temp = suburl.get(i); 
    String[] data = temp.split(" "); 

    Log.i("DATA 0", data[0]); 
    Log.i("DATA 1", data[1]); 
    Log.i("DATA 2", data[2]); 
} 

、.....私が間違っているの何....私を助ける

suburl.get(0) = "alex 21 engineer" 
    suburl.get(1) = "mike 22 lawyer" 
    suburl.get(2) = "sunny 26 deisnger" 
    suburl.get(3) = "kim 24 painter" 

String[] data; 

しかし、分割したときに何がエラーになるのですか.......

01-19 20:35:09.820: E/AndroidRuntime(1672): Caused by: java.lang.ArrayIndexOutOfBoundsException 
    01-19 20:35:09.820: E/AndroidRuntime(1672): at flash.com.MainActivity.onCreate(MainActivity.java:119) 
    01-19 20:35:09.820: E/AndroidRuntime(1672): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    01-19 20:35:09.820: E/AndroidRuntime(1672): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
+0

i<suburl.size() - 1;に置き換える必要があります。推測は必要ありません。 – kostja

+1

"インデックスが外れている"原因となる行は何ですか?この時点でLog.i( "DATA 0"、data [0]); –

+0

。Log.i( "DATA1"、data [1]); – Programmer

答えて

0

あなたはこのようArrayListにデータを設定した場合:

suburl.get(0) = "alex 21 engineer" 
    suburl.get(1) = "mike 22 lawyer" 
    suburl.get(2) = "sunny 26 deisnger" 
    suburl.get(3) = "kim 24 painter" 

私はそれが私のために正常に動作しているあなたはそれを変更するかもしれないと思うとsuburl.add("alex 21 engineer");

+0

これは説明のためのものではありません....私はそれがこの値を含んでいることを示したいと思っていました... – Programmer

0

の操作を行います。

public class TestClass { 

     public static void main(String args[]) { 
     ArrayList<String> suburl = new ArrayList<String>(); 


     suburl.add("alex 21 engineer"); 
    suburl.add("xyz 21 engineer"); 
    suburl.add("tim 21 engineer"); 
    suburl.add("gary 21 engineer"); 

     for(int i=0; i<suburl.size(); i++){ 

      String temp = suburl.get(i); 
     String[] data = temp.split(" "); 

     System.out.println(data[0]); 
     System.out.println(data[1]); 
     System.out.println(data[2]); 
    } 

結果:

alex 
21 
engineer 
xyz 
21 
engineer 
tim 
21 
engineer 
gary 
21 
engineer 
1

これは私にとってはうまくいくものですが、何が問題なのかよく分かりません。入力データを再度確認することができます。

List<String> suburl = new ArrayList<String>(); 
suburl.add("alex 21 engineer");  
suburl.add("xyz 21 engineer");  
suburl.add("tim 21 engineer"); 
suburl.add("gary 21 engineer"); 
for(String temp : suburl) { 
    String[] data = temp.split(" "); 
    System.out.println("DATA 0 " + data[0]); 
    System.out.println("DATA 1 " + data[1]); 
    System.out.println("DATA 2 " + data[2]); 
} 
+0

単一のisntace woudlはうまくいっています...しかし、複数のwont、suburl.add( "alex 21 engineer" suburl.add( "xyz 21 engineer"); suburl.add( "tim 21 engineer"); suburl.add( "gary 21 engineer"); – Programmer

+0

私はより多くのデータを試しました、それは私のために働く。 – Vaandu

1

私が考えていることは、すべての文字列に2つのスペースがあるわけではないと思います。データ[x]のようなことはしないでください。これらの文字列を使用するには別のループを使用します。

0

Yuoは、ユニットテストとデバッグに入れi<suburl.size();