Java 分隔符用法,为什么扫描仪不返回?
我正在做一个练习,来自Java C.Thomas Wu的面向对象编程入门 第73页提供了请求全名、使用分隔符标记全名并将其打印回来的代码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
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);
}
}