我正在尝试使用Scanner对象将字符串输入写入文本文件。
字符串输入是电影名称。但是,如果文件名有两个单词,则扫描程序对象只接受第一个单词。
我需要它来接受这两个词。这是我的代码: -
Scanner new_dvd_info = new Scanner(System.in);
System.out.println("Enter name of new film");`
String film_name = new_dvd_info.next();
请有人放光吗?
答案 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