2016-04-07 31 views
2

次のコードでは、値は正しく取りますが、要素の総数は表示されません。出力には常に1つの要素が欠けています。イテレータが機能しない

package com.java.arraylist; 

import java.util.*; 

public class ArrayList_1 { 
    public static void main(String[] args) { 
     ArrayList<String> arrayList = new ArrayList<String>(); 
     ArrayList_1 obj = new ArrayList_1(); 
     obj.readList(arrayList); 
     obj.displayList(arrayList); 
    } 

    private void displayList(ArrayList<String> arrayList) { 
     Iterator<String> it = arrayList.iterator(); 
     System.out.println("Entered Array List elements are : "); 
     while(it.hasNext()){ 
      System.out.println(it.next()); 
     } 
    } 

    private void readList(ArrayList<String> arrayList) { 
     Scanner scanner = new Scanner(System.in); 
     System.out.println("How many elements are you going to put in this list?"); 
     int end = scanner.nextInt(); 
     int start = 1; 
     System.out.println("Enter the elements to be added"); 
     while (scanner.hasNext() && start < end) { 
      String item = scanner.next(); 
      arrayList.add(item); 
      start++; 
     } 
     scanner.close(); 
    } 
} 
+0

: ここで作業例ですか? HIちょっと 入力された配列リストの要素である ハロー を追加する要素を入力します。私は1に開始を初期化し、<=終了を開始する条件を変更した場合、コンソールは3について ハロー HI –

答えて

3

readListであなたのwhileループは、例えば1

endが1のとき、あなたはwhileループに入ることはありません(1 < 1が偽であるので)でオフになって、あなたが読んでいないので、何でも

startを0に初期化するか、または終了条件をstart <= endに変更します。スキャンする入力を待っている間に

while (start <= end && scanner.hasNext()) 

scanner.hasNext()からブロックすることがあります:

EDIT:あなたの条件はに

変更。

start <= endがfalseの場合、ループはscanner.hasNext()を呼び出さずに終了します。

+0

を求めています2値を出力する。 –

+0

@NaveenMandadhi入力内容はどうやって入力していますか?単線?複数の行? – Eran

+0

シングルライン入力 –

0

間違っていました。

private void readList(ArrayList<String> arrayList) { 
    Scanner scanner = new Scanner(System.in); 

    System.out.println("How many elements are you going to put in this list?"); 
    int end = scanner.nextInt(); 

    System.out.println("Enter the elements to be added"); 

    for (int i = 0; i < end; i++) { 
     String item = scanner.next(); 
     arrayList.add(item); 
    } 
    scanner.close(); 
} 
0
while(start<=end){ 
     String item = scanner.next(); 
    arrayList.add(item); 
    start++;   
} 

or 

for(int i=0;i<end;i++){ 
    String item = scanner.next(); 
    arrayList.add(item); 

} 

おかげで、 アミット・クマール

あなたがこのリストに入れしようとしているどのように多くの要素