2016-05-11 3 views
0
import java.util.ArrayList; 
import java.util.Scanner; 
public class Arraylistexample { 

    public static void main(String[] args) 
    { 
     ArrayList<String> al=new ArrayList(); 
     System.out.println("Enter how many values you want to enter"); 
     Scanner scr =new Scanner(System.in); 
     int s=scr.nextInt(); 
     System.out.println("Enter the values"); 
     for(int i=0;i<s;i++) 
     { 
      Scanner sc=new Scanner(System.in); 
      String sr=sc.nextLine(); 
      al.add(sr); 
     } 
     al.add(2, "Tom"); 
     al.add(1, "Henry"); 
     al.add(0, "Natalie"); 
     System.out.println("The values you entered are:"); 
     for(String str:al) 
     { 
      System.out.println(str); 
     } 
    } 
    } 

上記のコードでは、ユーザーから値を取り出し、ArrayListに格納しようとしています。ユーザが値を入力した後、プログラムは元の値をシフトすることにより、指定されたインデックスにもう一度値を入力します。値を順番に入力してプログラムを実行すると、エラーは発生しません。出力はArrayListのランダムインデックスによるシフト

Natalie 

Henry 

Tom 

Harry 

Potter 

する必要がありますのに対し、私は

Enter how many values you want to enter 

2 

Enter the values 

Harry 

Potter 

The values you entered are: 

Natalie 

Harry 

Henry 

Potter 

Tom 

として、それは私にエラーを与える上記のプロセスでそれをやろうたび値がある場合、シフトはいえ行われていない理由しかし、私はまだ把握カントランダムに入力されます。あなたはTom追加

al.add(2, "Tom"); 
    al.add(1, "Henry"); 
    al.add(0, "Natalie"); 

を追加しているので、

+0

は、なぜあなたは、複数の 'Scanner'オブジェクトを作成していますか? –

+4

出力は正しいです、 '0 = Harry、1 = Potter'、2で' Tom'を挿入した後、 '0 = Harry、1 = Potter、2 = Tom'を取得します。 「ヘンリー」を1に入れた後、「0 =ハリー、1 =ヘンリー、2 =ポッター、3 =トム」を得る。 0にナタリーを入れた後、0 =ナタリー、1 =ハリー、2 =ヘンリー、3 =ポッター、3 =トム; – ritesht93

答えて

2

これは[Harry, Potter, Tom]

[Harry,Henry,Potter,Tom]

[Natalie, Harry, Henry, Potter, Tom]になります0Natalieの追加になります1Henryの追加になります2で起こっています

あなたは[Natalie,Henry,Tom,Harry,Potter]

として出力したい場合、あなたは

al.add(0, "Tom"); 
    al.add(0, "Henry"); 
    al.add(0, "Natalie"); 

として3つのadd操作を交換する必要があり、これがお役に立てば幸いです。

1

このリストの指定された位置に、指定された要素を挿入します。現在その位置にある要素(存在する場合)とそれに続く要素を右にシフトします(インデックスに1を加えます)。 パラメータ: java.lang.IndexOutOfBoundsException

を使用すると、値すでに任意のインデックスでAA新しい値を入力したときにことを意味:指定された要素を挿入する を挿入する 要素要素は例外れる インデックスindex新しい値が最初に取り出され、既存の値が右にプッシュされます。

たとえば、入力をHerryと入力した後、0番目のインデックスにNatalie、1番目のインデックスにHerry、2番目のインデックスにTumを入力しました。

ので、出力は ナタリー Herryものでなければならない Herry ポッター トム

詳細は、リンクレア喜ば用:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java#ArrayList.add%28int%2Cjava.lang.Object%29

関連する問題