有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java扫描程序,useDelimiter

我在使用Scanner类中的useDelimiter时遇到了一些问题

Scanner sc = new Scanner(System.in).useDelimiter("-");
while(sc.hasNext())
{
    System.out.println(sc.next());
}

如果我有这个输入

A-B-C

输出将是

A B

然后等到我再输入一个“-”,它就会打印出最后一个字符

然而,如果我不让用户输入数据,而是向扫描器插入一个字符串,代码就会工作。原因是什么?我该如何修复它?我不想用StringTokenzier


共 (3) 个答案

  1. # 1 楼答案

    您可以使用另一个分隔符字符串useDelimiter( "-|\n" ); 它既可以使用字符串参数,也可以通过读取System.in来工作。 在系统的情况下。在这种情况下,需要在行尾按enter键

  2. # 2 楼答案

    我将如何做到这一点:

    Scanner stdin = new Scanner(System.in);
    String s = stdin.nextLine();
    String[] splitInput = s.split("-", -1);
    

    现在将有一个Strings数组,其中包含所有-之间的数据

  3. # 3 楼答案

    如果Scanner没有等待您输入另一个-,那么它会错误地认为您已经完成了输入

    我的意思是,Scanner必须等待您输入-,因为它无法知道下一个输入的长度

    因此,如果用户想输入A-B-CDE,而你在C停下来喝了一口咖啡,它就不会得到正确的输入。(你期望[ A, B, CDE ],但它会得到[ A, B, C ]

    当您以完整的String传递它时,Scanner知道输入的结尾在哪里,不需要等待另一个分隔符

    我将如何做到这一点:

    Scanner stdin = new Scanner(System.in);
    String input = stdin.nextLine();
    String[] splitInput = input.split("-", -1);
    

    现在将有一个Strings数组,其中包含所有-之间的数据

    Here is a link to the ^{} documentation for your reading pleasure.