Java 扫描仪对象-拆分字符串

Java 扫描仪对象-拆分字符串,java,java.util.scanner,Java,Java.util.scanner,我正在尝试使用Scanner对象将字符串输入写入文本文件 字符串输入是电影名称。但是,如果文件名有两个单词,则scanner对象只接受第一个单词 我需要这两个字。这是我的密码:- Scanner new_dvd_info = new Scanner(System.in); System.out.println("Enter name of new film");` String film_name = new_dvd_info.next(); 有人能帮

我正在尝试使用Scanner对象将字符串输入写入文本文件

字符串输入是电影名称。但是,如果文件名有两个单词,则scanner对象只接受第一个单词

我需要这两个字。这是我的密码:-

Scanner new_dvd_info = new Scanner(System.in);

System.out.println("Enter name of new film");`          
String film_name = new_dvd_info.next();          

有人能帮我解释一下吗?

new\u dvd\u info.nextLine()
替换
new\u dvd\u info.nextLine()
来抓取整行。

new\u dvd\u info.nextLine()
替换
new\u dvd\u info.nextLine()
来抓取整行。

扫描器的文档。方法说

Finds and returns the next complete token from this scanner.
A complete token is preceded and followed by input that matches
the delimiter pattern. This method may block while waiting for input 
to scan, even if a previous invocation of {@link #hasNext} returned 
<code>true</code>.
所以它将一直拾取,直到在您的案例中找到“”作为分隔符。您可以使用扫描仪上的下一行方法获取整个字符串
new\u dvd\u info.nextLine()
,或者您可以像这样循环:

 while(scanner.hasNext) {
      //append to string using scanner.next();
 }

Scanner.next()方法的文档说明

Finds and returns the next complete token from this scanner.
A complete token is preceded and followed by input that matches
the delimiter pattern. This method may block while waiting for input 
to scan, even if a previous invocation of {@link #hasNext} returned 
<code>true</code>.
所以它将一直拾取,直到在您的案例中找到“”作为分隔符。您可以使用扫描仪上的下一行方法获取整个字符串
new\u dvd\u info.nextLine()
,或者您可以像这样循环:

 while(scanner.hasNext) {
      //append to string using scanner.next();
 }

这里的问题是您使用的是
new\u dvd\u info.next()
,它返回第一个完整的令牌。如果遇到任何分隔符,如
空格
,它会将下一个单词视为单独的标记

Scanner sc=new Scanner(System.in);
String s=sc.next();
System.out.println(s);
在上面的代码中,如果您将电影名称命名为
Age of Ultron
,它将只返回标记
Age
,因为标记Age之后有一个分隔符

如果希望完整的
字符串
用分隔符分隔,则应使用

Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
System.out.println(s);

这将为您提供所需的输出,即
Ultron的年龄
这里的问题是您正在使用
新dvd\u info.next()
,它返回第一个完整的令牌。如果遇到任何分隔符,如
空格
,它会将下一个单词视为单独的标记

Scanner sc=new Scanner(System.in);
String s=sc.next();
System.out.println(s);
在上面的代码中,如果您将电影名称命名为
Age of Ultron
,它将只返回标记
Age
,因为标记Age之后有一个分隔符

如果希望完整的
字符串
用分隔符分隔,则应使用

Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
System.out.println(s);
这将为您提供所需的输出,即
Ultron时代
扫描仪#next()
仅返回空格之前的内容。您应该使用
Scanner#nextLine
读取整行,然后使用
String#split
Scanner#next()
只返回空格前面的内容。您应该使用
Scanner#nextLine
来读取整行,然后使用
String#split