嘿嘿伙计们,我想知道如何才能让扫描仪接受的不仅仅是第一个字?
我的代码(摘要)
if (command.equals("diary"))
{
String stuff;
while (scanner.hasNextLine())
{
stuff = scanner.nextLine();
BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\text.txt")); //you don't need to create a File object, FileWriter takes a string for the filepath as well
try {
writer.write("Diary info: " + stuff);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
writer.close();
}
}
答案 0 :(得分:0)
通常next
将读取整个数据直到下一个分隔符,因为默认分隔符是一个或多个空格的集合,您只能在这样的空格(或最终数据结束)之前看到第一个单词。
要阅读整行,您可以使用nextLine()
代替next()
要读取整个数据(包含多行),您可以使用
while (scanner.hasNextLine()){
String line = scanner.nextLine();
}
或者您可以设置分隔符以仅匹配数据结尾。你可以用
来做scanner.useDelimiter("\\Z");
只需像现在这样使用scanner.next()
。 "\\Z"
是正则表达式,表示整个数据的结尾。您还可以使用"\\A"
将分隔符设置为数据的开头,因为在扫描程序光标的当前位置之后的第一个字符后搜索分隔符,因此永远不会发现扫描程序在数据结束之前进行迭代。
更新以回复您的评论:
尝试在循环之外移动writer,就像在这段代码示例中一样:
if (command.equals("diary"))
{
String stuff;
BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\text.txt")); //you don't need to create a File object, FileWriter takes a string for the filepath as well
Scanner scanner =null;
while (scanner.hasNextLine())
{
stuff = scanner.nextLine();
try {
writer.write("Diary info: " + stuff);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
writer.close();
}