Java 我的扫描仪(用于用户输入)只读取第一个单词,如何使其读取所有输入?

Java 我的扫描仪(用于用户输入)只读取第一个单词,如何使其读取所有输入?,java,input,Java,Input,嘿,伙计们,我在想我怎样才能让扫描仪接受的不仅仅是第一个单词 我的代码(代码片段) 通常,next将读取整个数据直到下一个分隔符,因为默认情况下,分隔符是由一个或多个空格组成的,所以您只能看到这些空格前的第一个单词(或最终是数据的结尾)。 要阅读整行内容,可以使用nextLine()而不是next() 要读取整个数据(有许多行),您可以使用 while (scanner.hasNextLine()){ String line = scanner.nextLine(); } 或者,您可以

嘿,伙计们,我在想我怎样才能让扫描仪接受的不仅仅是第一个单词

我的代码(代码片段)


通常,
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();

}

你想收多少钱?一整行?有很多选项,但您需要向我们展示示例输入和预期输出。没有它,我们只能猜测你需要什么。好吧,我添加了循环,但是我如何才能关闭编写器?如果我把它放在循环之外,它将不起作用,如果我把它放在循环中。它只是生成一个新行,当然,它必须在循环之前创建
BufferedWriter
,然后在循环之后关闭它。
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();

}