Java ArrayList程序未按预期工作
代码未按预期工作。Console不断地请求值,并且从不停止Java ArrayList程序未按预期工作,java,arraylist,Java,Arraylist,代码未按预期工作。Console不断地请求值,并且从不停止 package com.java.collections; import java.util.*; public class ArrayList_2 { public static void main(String[] args) { ArrayList<String> arrayList = new ArrayList<String>(); readList(ar
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;
}
}
package com.java.collections;
导入java.util.*;
公共类数组列表2{
公共静态void main(字符串[]args){
ArrayList ArrayList=新的ArrayList();
可读列表(arrayList);
显示列表(arrayList);
}
私有静态无效显示列表(ArrayList ArrayList){
对于(int i=0;i我会在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
通过这种方式,循环正在检查将包含在项中的sentinel值
您的代码不工作,因为它卡在while循环中。您的代码中没有中断条件。请尝试用此值替换它:
while (obj.hasNext()) {
String item = obj.next();
if (item.equals("stop")) {
break;
}
// otherwise do stuff here...
}
obj.close();
当您输入“停止”时,循环将终止。请不要忘记关闭扫描仪实例。您的程序不会停止并不断请求更多值,因为没有代码告诉程序停止:)
您可以添加一些条件,告知代码停止接受输入,例如,当用户输入以下5个单词时(请参见注释行):
private静态无效读取列表(ArrayList列表){
@抑制警告(“资源”)
int start=1;//开始计数
int end=5;//结束计数
扫描器obj=新扫描器(System.in);
while(obj.hasNext()&&start我会尝试确定。但我不明白我的代码为什么不起作用。让我更好地解释一下,hasNext
如果扫描仪,obj
在其输入中有另一个标记,则返回true。因此,即使只输入空字符串,也会返回true。您的循环实际上没有停止循环的哨兵值。在我的示例中我提供了一个代码,-0
。无法运行。但是我理解你说的。非常感谢!有没有其他方法可以正确编码?请帮助。好的。你在使用什么IDE?输入仍然没有停止?输入在我输入-0
时停止。我使用NetBeansThanks,我现在知道了!hasNext()当我输入nothing并单击enter时,方法返回true?我相信它将返回true,因为您仍在输入一个空输入。您可以调试代码并检查文档以验证这一点。谢谢,我现在知道了!hasNext()是否当我输入nothing并单击enter时,方法返回true?为什么不直接测试它?只需在循环中添加以下内容,例如:System.out.println(“hasNext()为true”);
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.
}
}