Java 使用扫描仪提示用户输入,直到用户以<;ctrl D>;

Java 使用扫描仪提示用户输入,直到用户以<;ctrl D>;,java,java.util.scanner,string-split,Java,Java.util.scanner,String Split,我正在编写一个名为NameList.Java的小型Java应用程序。它应该提示输入一个字符来拆分字符串。 然后,它应该提示输入一个名称列表,每行一个,直到用户终止。现在,名称将是一个长度为2的简单名称,如下所示 “名姓” 在读取每个名称后,程序应将名称显示为“姓氏,给定名称”(例如,“Smith,John”)。如果该人的姓氏位于拆分字母之前或以拆分字母开头,则应报告该人前往演讲厅A,否则应报告该人前往演讲厅B 我不知道为什么当我运行我的代码时,我没有得到持续的提示?有人知道为什么吗?谢谢大家的时

我正在编写一个名为NameList.Java的小型Java应用程序。它应该提示输入一个字符来拆分字符串。 然后,它应该提示输入一个名称列表,每行一个,直到用户终止。现在,名称将是一个长度为2的简单名称,如下所示 “名姓”

在读取每个名称后,程序应将名称显示为“姓氏,给定名称”(例如,“Smith,John”)。如果该人的姓氏位于拆分字母之前或以拆分字母开头,则应报告该人前往演讲厅A,否则应报告该人前往演讲厅B

我不知道为什么当我运行我的代码时,我没有得到持续的提示?有人知道为什么吗?谢谢大家的时间和回复

import java.util.Scanner;

public class Namelist {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter Split String ...");
        char  splitter = in.nextLine().toLowerCase().charAt(0);
        String checker;

        while(in.hasNext()) {
            System.out.println("Enter a name to check ...");
            String s = in.next();
            String[] tokens = s.split(" ");

            if (tokens[0].contains(Character.toString(splitter).toLowerCase())
                || tokens[1].toLowerCase().charAt(0)== splitter) {

                System.out.printf("%s, %s : Lecture Room A." ,tokens[1],tokens[0]);
            } else {
                System.out.printf("%s, %s : Lecture Room B.",tokens[1],tokens[0]);
            }

            in.close();
        }
    }

}

Scanner\next()
做什么?
Scanner#close()
做什么?next()方法是返回下一个令牌,close()方法是关闭Scanner以防止资源泄漏,因为我的eclispe一直在抱怨它。我以前从未使用过这种提示用户输入的方式,但我只是想知道如何进行测试,以及令牌的定义是什么?而
又是什么呢!在.hasNext()中
mean?我认为您应该从阅读开始。特别是对于您的情况,请检查hasNext方法描述中的“Throws”部分。