ArrayList程序无法正常工作

时间:2016-04-07 02:14:36

标签: java arraylist

代码无法正常工作。控制台一直在询问价值并永不停止。

package com.java.collections;

import java.util.*;

public class ArrayList_2 {

    public static void main(String[] args) {

        ArrayList<String> arrayList = new ArrayList<String>();
        readList(arrayList);
        displayList(arrayList);
    }

    private static void displayList(ArrayList<String> arrayList) {

        for(int i=0;i<arrayList.size();i++){
            System.out.println(arrayList.get(i));
        }

    }

    private static ArrayList<String> readList(ArrayList<String> list) {

        @SuppressWarnings("resource")

        Scanner obj = new Scanner(System.in);

        while(obj.hasNext()){
            String item = obj.next();
            list.add(item);
        }
        return list;
    }

}

3 个答案:

答案 0 :(得分:0)

我会更改while方法中的readList循环,如下所示:

Scanner obj = new Scanner(System.in);

String item = "";

//*priming read*
item = obj.nextLine();

while(!item.equals("-0"))
{
  list.add(item);

  //*update read*
  item = obj.nextLine();
} //end while

这样循环就会检查item中包含的标记值。

答案 1 :(得分:0)

您的代码无效,因为它卡在while循环中。你没有休息条件。尝试用这个替换它:

    while (obj.hasNext()) {
        String item = obj.next();
        if (item.equals("stop")) {
            break;
        }
        // otherwise do stuff here...
    }
    obj.close();

当您输入“停止”时,循环将终止。不要忘记关闭扫描仪实例。

答案 2 :(得分:0)

你的程序没有停止并继续要求更多的值,因为没有代码告诉程序停止:)。

您可以添加一些条件,告诉代码停止接受输入,例如。当用户输入如下5个单词时(参见注释行):

 private static void readList(ArrayList<String> list) {

    @SuppressWarnings("resource")
    int start = 1; // start count
    int end = 5;   // end count
    Scanner obj = new Scanner(System.in);

    while(obj.hasNext() && start<=end){ // <- Note the condition!
        String item = obj.next();
        list.add(item);
        start++; // Keep a count.
    }

}