如何在Java中更改定界符?

时间:2018-06-29 20:15:20

标签: java java.util.scanner delimiter

我有这个小代码:

import java.util.*;

public class monogram3 {

   public static void main(String[] args) {
     String name;
     Scanner scanner = new Scanner(System.in);
     scanner.useDelimiter(System.getProperty("line.separator"));
     System.out.print("Enter your full name (first, middle, last):");
     name = scanner.next( );
     System.out.println("Name entered: " + name);
   }

}

预期输出: 输入您的全名(名字,中间名和姓氏):John Stacy Clug 输入的姓名:John Stacy Clug

我得到的信息: 输入您的全名(名字,中间名和姓氏):John Stacy Clug


代码中是否存在某些错误,它没有显示我输入的全名?我知道还有其他方法可以这样做,但我很想知道这里出了什么问题。

2 个答案:

答案 0 :(得分:3)

首先,您应该只使用nextLine并省去了麻烦。您遇到的问题是在Windows(我假设您使用Windows)上,System.getProperty("line.separator")\r\n,但是System.in仅使用\n来分隔行(至少在使用Netbeans时会这样) )。结果,由于控制台输入实际上从未包含\r\n,因此该行

name = scanner.next( );

永远不会停止请求输入,因为它永远不会到达定界符,因此下一行System.out.println("Name entered: " + name);永远不会运行。只需使用nextLine(),好吗?

答案 1 :(得分:0)

这可能是一个愚蠢的问题,但是您在输入正确的字符串后按“ Enter”键吗?当前代码以合理的方式为我工作。 输入您的全名(名字,中间名和姓氏):john e doe 输入的姓名:john e doe