我试图制作一个程序,在import java.util.Scanner;
import java.util.ArrayList;
public class Family {
public static void main(String[] args){
ArrayList<String> names=new ArrayList<String>();
Scanner in=new Scanner(System.in);
System.out.println("Enter the names of your immediate family members and enter \"done\" when you are finished.");
String x=in.nextLine();
while(!(x.equalsIgnoreCase("done"))){
x = in.nextLine();
names.add(x);
}
int location = names.indexOf("done");
names.remove(location);
System.out.println(names);
}
}
中打印出用户输入的值,并且在大多数情况下,它可以正常工作。除了它不打印第一个元素。这是代码:
{{1}}
例如,如果,我输入jack,bob,sally,它会打印[bob,sally]
答案 0 :(得分:4)
当您进入循环时,您立即呼叫nextLine()
,在此过程中丢失先前输入的行。您应该在阅读其他值之前使用它:
while (!(x.equalsIgnoreCase("done"))) {
names.add(x);
x = in.nextLine();
}
编辑:
当然,这意味着"done"
不会添加到names
,因此以下行应删除它们:
int location = names.indexOf("done");
names.remove(location);
答案 1 :(得分:1)
String x=in.nextLine();
while loop
之外的这一行消耗了第一个输入,因为当您输入while loop
时,再次调用x=in.nextLine();
而不保存第一个输入,因此它会丢失。因此它不会被打印,因为它不在ArrayList
。
只需删除String x=in.nextLine();
之前包含的while loop
,您的代码即可正常使用。
String x="";
System.out.println("Enter the names of your immediate family members and enter \"done\" " +
"when you are finished.");
while(!(x.equalsIgnoreCase("done"))){
x = in.nextLine();
names.add(x);
}
答案 2 :(得分:0)
因为第一个元素由第一个x= in.nextLine();
使用,而您从未将其添加到列表中。
试试这个:
System.out.println("Enter the names of your immediate family members and enter \"done\" when you are finished.");
String x="";
while(!(x.equalsIgnoreCase("done"))){
x = in.nextLine();
names.add(x);
}