2016-08-15 1 views
1

ArrayListの2つと、strの1つの配列を宣言しました。配列のインデックスされた要素でさえもnumberArrayListに格納し、奇数のインデックスをnameArrayListに格納します。配列の偶数と奇数のインデックス付き要素を別々のArrayListに格納したい

私を助けてください。 ありがとうございます。

import java.util.Scanner; 
import java.util.*; 

public class Que1 { 

    public static void main(String[] args) 
    { 

    int a=0; 
    String[] str=new String[1000]; 

    List<String> name = new ArrayList<>(); 
    List<Integer> number = new ArrayList<>(); 

    Scanner sc=new Scanner(System.in); 
    a=sc.nextInt(); 


    for(int i=0;i<=a;i++) 
     { 
     String ns=sc.nextLine(); 
     str=ns.split(" "); 
      for(int j=0;j<str.length;j=j+2) 
       { 
        name.add(str[j]); 
        Collections.sort(name); 
       } 

      for(int k=1;k<str.length;k=k+2) 
       { 
        int add=Integer.parseInt(str[k]); 
        number.add(add); 
        Collections.sort(number); 
       } 
     } 

    for(int i=0;i<str.length;i++) 
     {    
      String valueName = name.get(i); 
      String valueNumber = number.get(i).toString(); 
      System.out.print(valueName+ " "); 
      System.out.print(valueNumber+ " "); 
     }  
    } 
} 

出力::ここ数ArrayListのも、私はなぜ知らない印刷と名前のArrayListの最後の要素は、印刷ではありません最初の印刷ではなく、名前のArrayList と名前のArrayListでは、1個の空白です。 誰もが解決策

2 
a 11 b 22 c 33 
d 44 e 55 f 66 
    11 a 22 b 33 c 44 d 55 e 66 BUILD SUCCESSFUL (total time: 20 seconds) 
+3

<=を交換 '私は=の名前を< .size() 'リストのサイズは' 4'なので、あなたがアクセスできる最も高いインデックスは '3'です。それを 'i

+2

あなたの '<='はすべて '<'でなければなりません。 – Zircon

+0

デバッグを試してください。この方法では、インデックスが配列にとって大きすぎるときを知ることができます。 – MrSmith42

答えて

1

を見つけることができますが、サイズの場所にアイテムを取得しようとしているが、項目のカウントが0から始まるため、最後の項目はsize() - 1です。

意味、このようにそれを書くべきあなたのために:

for (int i = 0; i < name.size(); i++) 
1

あなたは書くことができます。

for(int j=0; j != str.length; j++) { 
    if (j % 2 == 0) { // Even 
     number.add(str[j]); 
    } else { // Odd 
     name.add(str[j]); 
    } 
} 
を、配列を印刷する <

関連する問題