i试图制作一个程序,该程序在ArrayList
中打印出用户输入的值,并且在大多数情况下,它有效。除了它不打印第一个元素。这是代码:
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);
}
}
例如,如果我输入杰克,鲍勃,莎莉,它将打印[鲍勃,莎莉]
输入循环时,您会立即调用nextLine()
,在此过程中失去先前输入的线路。在阅读其他值之前,您应该使用它:
while (!(x.equalsIgnoreCase("done"))) {
names.add(x);
x = in.nextLine();
}
编辑:
当然,这意味着"done"
不会添加到names
中,因此以下行,应删除它们:
int location = names.indexOf("done");
names.remove(location);
String x=in.nextLine();
while loop
之外的这一行会消耗第一个输入,因为当您输入while loop
时,您再次致电x=in.nextLine();
而不会保存第一个输入,因此它会丢失。因此,它不会被打印,因为它不在ArrayList
中。
只需删除while loop
之前包含的String x=in.nextLine();
,您的代码正常工作。
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);
}
因为第一个元素是第一个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);
}