代码无法正常工作。控制台一直在询问价值并永不停止。
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;
}
}
答案 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.
}
}