扫描仪对象 - 拆分字符串

时间:2014-12-03 09:03:32

标签: java java.util.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();          

请有人放光吗?

3 个答案:

答案 0 :(得分:5)

new_dvd_info.next()替换为new_dvd_info.nextLine()以获取整行。

答案 1 :(得分:1)

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>.

所以它会一直发现直到找到&#34; &#34;在你的情况下作为分隔符。您可以在扫描仪上使用下一行方法来获取整个字符串new_dvd_info.nextLine(),或者您可以像以下一样循环:

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

答案 2 :(得分:0)

这里的问题是您正在使用new_dvd_info.next()返回第一个完整令牌。如果遇到任何分隔符,例如space,则将下一个单词视为单独的标记。

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

在上面的代码中,如果您将电影的名称指定为Age of Ultron,它将只返回令牌Age,因为在令牌年龄之后有一个分隔符。

如果您想要使用分隔符分隔的完整String,则应使用

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

这将为您提供所需的输出,即Age of Ultron