Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分隔符用法,为什么扫描仪不返回?_Java_Delimiter - Fatal编程技术网

Java 分隔符用法,为什么扫描仪不返回?

Java 分隔符用法,为什么扫描仪不返回?,java,delimiter,Java,Delimiter,我正在做一个练习,来自Java C.Thomas Wu的面向对象编程入门 第73页提供了请求全名、使用分隔符标记全名并将其打印回来的代码 import java.util.*; class Scanner1 { public static void main(String[] args) { String name; Scanner scanner = new Scanner(System.in); scanner.useDel

我正在做一个练习,来自Java C.Thomas Wu的面向对象编程入门

第73页提供了请求全名、使用分隔符标记全名并将其打印回来的代码

import java.util.*;

class Scanner1
{
    public static void main(String[] args)
    {
        String name;
        Scanner scanner = new Scanner(System.in);

        scanner.useDelimiter(System.getProperty("line.separator"));
        System.out.print("Enter full name (first, middle, last)");   

        name = scanner.next( );
        System.out.println("you entered " + name + ".");
    }
}
问题是,我的似乎不想把它打印回来,它冻结了程序,迫使使用任务管理器关闭它

它编译并没有错误。我已经检查了几次拼写错误等

如果我删除分隔符部分(最后一张图片),它会将一个第一个标记使用到第一个空格。因此,错误位于分隔符代码的某个位置


您的IDE控制台似乎没有考虑[Enter]行分隔符。如果代码有效,最好的尝试方法是直接从终端(Windows上的控制台)调用编译后的Java文件。当然,首先需要导航到编译后的Java文件所在的目录(Scanner1.class文件所在的目录)

例如java Scanner1

如果希望独立于系统,最好的方法是编译一个模式,通过该模式定义分隔符,或者只使用内置方法。nextLine()


你发布的代码对我来说很好!您确定要在输入后按“回车”键吗?请检查输出窗口。您使用的IDE似乎有问题。行分隔符可能有所不同它工作得很好,请看这里您的代码在Eclipse下工作得很好。谢谢您的评论,现在它应该可以工作了。我不知道为什么我使用了错误的常量字段。
public class Main {
    //These constant fields are from .nextLine() method in the Scanner class
    private static final String LINE_SEPARATOR_PATTERN ="\r\n|[\n\r\u2028\u2029\u0085]";

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        scanner.useDelimiter(Pattern.compile(LINE_SEPARATOR_PATTERN));
        System.out.print("Enter name:");
        String name = scanner.next();
        System.out.println(name);
    }
}