2017-03-08 3 views
-4

私はこの質問がいくつかのメンバーのためにここで愚かに聞こえることを知っていますが、私はもう考えていません。Android:ArrayListのインデックス1を取得できません

私はアレイに奇妙な問題に直面しました。私はArrayListindex 1を取得しようとしますが、常にを投げます。

私は次のコードでデバッグしています

   for (int o=0; o<vcard.size(); o++){ 
        if(vcard.get(o).contains(":")){ 
         System.out.println("Contains"); 
         String[] splitByTitikDuaVCard = vcard.get(o).split(Pattern.quote(":")); 
         //this line show the length is 2 
         System.out.println("RESULT LENGTH : " + splitByTitikDuaVCard.length); 
         for (int y=0; y<splitByTitikDuaVCard.length; y++){ 
          System.out.println("RESULT Y : " + splitByTitikDuaVCard[y] + ", INDEX : " + y); 
          mapContentTerbaruVCard.put(splitByTitikDuaVCard[0], splitByTitikDuaVCard[1]); 
         } 
        }else{ 
         System.out.println("Not Contains"); 
        } 
       } 

logの結果を:

03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 2 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : BEGIN, INDEX : 0 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : VCARD, INDEX : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 2 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : VERSION, INDEX : 0 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : 3.0, INDEX : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 2 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : N, INDEX : 0 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : Doe;John, INDEX : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 2 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : FN, INDEX : 0 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : John Doe, INDEX : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 2 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : ORG, INDEX : 0 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : PT. Pertamina, INDEX : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 2 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : TITLE, INDEX : 0 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : Bussiness Manager, INDEX : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 2 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : ADR, INDEX : 0 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : ;;Soekarno Hatta;Bandung;;46153;West Jave, INDEX : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 2 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : TEL;WORK;VOICE, INDEX : 0 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : 021 203312, INDEX : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 2 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : TEL;CELL, INDEX : 0 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : +62818456463111, INDEX : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 1 
03-08 23:00:18.594 8350-8350/? I/System.out: RESULT Y : TEL;FAX, INDEX : 0 

logindex 1が存在していることを示しているが、私はにindex 1を入れしようとすると、 HashMap、エラーが表示されます

私の質問は次のとおりです。ので、私はhashmap

注意にそれを保存することができますindex 1を見つける方法:私はこの(Java ArrayList IndexOutOfBoundsException Index: 1, Size: 1)ソリューションを試してみたが、私の場合に取り組んでいません。

+5

このエラーは、ArrayListのサイズが1であることを示しています。要素は0です。 –

+0

"索引1が存在することを示すログ"このログを表示してください。また、完全なコード例を示す必要があります。クラスの中にあるメソッドの中にコードを入れてください。最後に、stacktrace全体をポストし、エラーの原因となった行を表示します。 –

+0

配列は0から数え始めます。基本的には、次のようなエラーメッセージが表示されます。配列/ arraylistに1要素があり、実際にリストの2番目の要素であるインデックス1の要素にアクセスしようとしました。 (またはエラーが発生してからではありません)。 –

答えて

0

splitByTitikDuaVCardは、lenght = 1である可能性がありますので、位置[1]は範囲外です。

OPの場合は、自分で試してみてください。あなたはsplitByTitikDuaVCard[1]から値を取得している第二のループ(インナーループ)で

03-08 23:00:18.594 8350-8350/? I/System.out: RESULT LENGTH : 1 

長=

+0

しかし、私は ':'で分割したので、2つのインデックス、 'index 0'と' index 1'を含んでいなければなりません。 – Koma

+0

@Koma更新された回答を見ると、何が起こるか説明します。 – LppEdd

+0

私は '' String [] splitByTitikDuaVCard = vcard.get(o).split(Pattern.quote( ":")); 'と' System.out.println( "RESULT LENGTH:" + splitByTitikDuaVCard.length); '長さshow '2' – Koma

-1

:あなたは長さがあなたのログで1

public class Test 
{ 
    public static void main(final String[] args) { 
     final String[] splitted = "String:".split(":"); 
     System.out.println(splitted.length); 
    } 
} 

Lookintでわかります索引の価値をハードコーディングする理由yの値を使用する必要があります。

、あなたの鍵はKEY0、キー1になります。このコードでは、この

mapContentTerbaruVCard.put("key"+y, splitByTitikDuaVCard[y]); 

でこの

mapContentTerbaruVCard.put(splitByTitikDuaVCard[0], splitByTitikDuaVCard[1]); 

を交換してください....

それはあなたを助ける、このコードを試してみてください

+0

正確に "キー"はどういう意味ですか?私は私の場合、 'splitByTitikDuaVCard'の' index 0'を 'keymap'として' hasmap'に保存する必要があります。 – Koma

+0

** key **は 'HashMap'の値の識別です。あなたは 'HashMap'の** value **を知りませんが、キーを知っていれば、特定の** key **の値を簡単に見つけることができます。そして、はいインデックスをキーとして格納するので、インデックスから価値を得ることができます。ただし、**ハードコードされた**値は保存しないでください。私の答えをもう一度見てください。 –

関連する問題