Java 读取字符串列表中的名称

Java 读取字符串列表中的名称,java,arraylist,Java,Arraylist,我想打印arrayList中的姓名列表: public class arrReader { static Scanner input = new Scanner(System.in); static ArrayList<String> arr = new ArrayList<String>(); public static void main(String[] args) { System.out.println("Please enter your names

我想打印arrayList中的姓名列表:

public class arrReader {
static Scanner input = new Scanner(System.in);
static ArrayList<String> arr = new ArrayList<String>();

public static void main(String[] args) {
    System.out.println("Please enter your names: ");
    String names = input.next();
    while(names.length()>0) {
        arr.add(names);
        names = input.nextLine();
    }

    PrintArry();
}


public static void PrintArry() {
    System.out.println("------------------------------------");
    for (String i : arr) {
        System.out.println(i);

    }
}

}
公共类读取器{
静态扫描仪输入=新扫描仪(System.in);
静态ArrayList arr=新ArrayList();
公共静态void main(字符串[]args){
System.out.println(“请输入您的姓名:”);
字符串名称=input.next();
while(names.length()>0){
arr.add(姓名);
name=input.nextLine();
}
printary();
}
公共静态void PrintArry(){
System.out.println(“-----------------------------------------”;
用于(字符串i:arr){
系统输出打印LN(i);
}
}
}
结果是: 请输入您的姓名: 苹果香蕉和平


苹果

香蕉和平

如何在一行中显示名称? 还有,为什么我必须输入两次才能得到结果? 谢谢

你能试试吗:

System.out.print(i);
而不是:

System.out.println(i);
println方法打印i和afstand新行

以不在最后一行之后添加“,”

if (arr.size() > 0) {
    System.out.print(arr.get(0));
    for (int i = 1; i < arr.size(); i++) {
        System.out.print(", " + arr.get(i);
    }
}
if(arr.size()>0){
系统输出打印(arr.get(0));
对于(int i=1;i
或者如果您使用JAVA 8,您可以尝试以下方法:

public static void PrintArry() {
    System.out.println("------------------------------------");
    Arrays.stream(arr).forEach(System.out::print);
}

您的问题是由以下事实引起的:
next()
只使用一个令牌,因此对于像
Apple Banana Peace[enter/line separatpr]
这样的数据,它将只使用
Apple
。之后,
nextLine()
将读取字符串的剩余部分,直到行分隔符为止(此处“Banana Peace”作为下一个值)。但由于该字符串的字符数超过0个,因此循环将要求您输入另一个字符串,并且在输入空行之前不会停止。如果您希望将该数据读取为一个包含
Apple Banana Peace
的字符串,以便可以将其作为一行中的一个值打印,则需要
nextLine()
方法。