我正在从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 + ".");
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我似乎不想打印回来,它冻结了程序,迫使使用任务管理器关闭它.
它编译并且没有错误.我已经多次检查拼写错误等.
如果我删除分隔符部分(最后一张图片),它会将第一个令牌放到第一个空格.所以错误位于分隔符代码周围.
似乎您的IDE控制台没有考虑[Enter]行分隔符.尝试代码工作的最佳方法是直接从终端(Windows上的控制台)调用编译的Java文件.当然,首先需要导航到编译的Java文件持久存在的目录(Scanner1.class文件所在的目录).
例如java Scanner1
如果您希望与系统无关,那么最好的方法是编译一个Pattern来定义分隔符,或者只使用内置方法.nextLine()引用Oracle文档
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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |