Java 使用ArrayList进行用户输入
我希望允许用户输入字符串,直到输入一个空行,并将字符串存储在ArrayList中。我有下面的代码,我认为它是正确的,但显然不是Java 使用ArrayList进行用户输入,java,arraylist,input,java.util.scanner,user-input,Java,Arraylist,Input,Java.util.scanner,User Input,我希望允许用户输入字符串,直到输入一个空行,并将字符串存储在ArrayList中。我有下面的代码,我认为它是正确的,但显然不是 String str = " "; Scanner sc = new Scanner(System.in); ArrayList<String> list = new ArrayList<String>(); System.out.println("Please enter words"); while (sc.hasNextLine
String str = " ";
Scanner sc = new Scanner(System.in);
ArrayList<String> list = new ArrayList<String>();
System.out.println("Please enter words");
while (sc.hasNextLine() && !(str = sc.nextLine()).equals("")) {
list.add(sc.nextLine());
}
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
String str=”“;
扫描仪sc=新的扫描仪(System.in);
ArrayList=新建ArrayList();
System.out.println(“请输入文字”);
而(sc.hasNextLine()&&!(str=sc.nextLine())。等于(“”){
list.add(sc.nextLine());
}
对于(int i=0;i当您调用一次sc.hasNextLine()
但调用两次sc.nextLine()时,您将尽可能多地使用下一行
相反,调用一次nextLine()
,然后使用存储结果的变量检索读取行:
while (sc.hasNextLine() && !(str = sc.nextLine()).equals("")) {
list.add(str);
}
当您调用单个时间
sc.hasNextLine()
但调用两次sc.nextLine()
时,您将尽可能多地使用下一行
相反,调用一次nextLine()
,然后使用存储结果的变量检索读取行:
while (sc.hasNextLine() && !(str = sc.nextLine()).equals("")) {
list.add(str);
}
每次调用
sc.nextLine()
时,它都会从用户那里读取另一行内容。当您在while
循环条件中调用它一次,以及在循环体中调用它一次时,您认为会发生什么?为什么要将str
设置为它返回的值,但不再使用str
?每次调用sc.nextLine()时
它从用户那里读取另一行内容。当您在循环条件下调用它一次,以及在循环体中调用它一次时,您认为会发生什么情况?为什么您要将str
设置为它返回的值,但不再使用str
呢?谢谢,它工作了!为什么是list.add(str)而不是list.add(sc)?我声明了str=“”,那么它不只是将“”添加到arraylist中吗?欢迎:)您不需要,也不能将扫描仪
对象添加到字符串的列表中,但您希望在中添加字符串
s。while
语句的第二个布尔表达式阻止在列表中添加空字符串:和!(str=sc.nextLine()).equals(“”
谢谢,它能工作!为什么是list.add(str)而不是list.add(sc)?我声明了str=“”,所以它不只是将“”添加到arraylist中吗?欢迎:)您不需要,也不能将扫描仪
对象添加到字符串的列表中,但您希望在中添加字符串。while
语句的第二个布尔表达式阻止在列表中添加空字符串:和!(str=sc.nextLine()).equals(“”)