Java 使用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

我希望允许用户输入字符串,直到输入一个空行,并将字符串存储在ArrayList中。我有下面的代码,我认为它是正确的,但显然不是

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(“”)