Java扫描程序或缓冲读取器

Java扫描程序或缓冲读取器,java,java.util.scanner,bufferedreader,Java,Java.util.scanner,Bufferedreader,我有一个要求,我必须从控制台而不是从文件中读取输入 输入格式如下。我知道我可以使用任何字符退出。但我不能给出除此之外的任何其他输入。我可以写一些东西,比如等待特定的时间量,如果没有输入,则中断循环,或者可以做些什么来读取输入,这些输入的长度我们以前从未知道 你好,阿格尼斯 仆从,贝多 收缩射线矢量 下面的逻辑将使读线永远等待输入,并且不会有任何帮助,因为我每次按enter键都将再次成为另一个输入字符,并且永远不会结束 我也不想给任何退出字符来决定输入的结束,比如“退出”。如何处理这个 Array

我有一个要求,我必须从控制台而不是从文件中读取输入

输入格式如下。我知道我可以使用任何字符退出。但我不能给出除此之外的任何其他输入。我可以写一些东西,比如等待特定的时间量,如果没有输入,则中断循环,或者可以做些什么来读取输入,这些输入的长度我们以前从未知道

你好,阿格尼斯
仆从,贝多
收缩射线矢量

下面的逻辑将使读线永远等待输入,并且不会有任何帮助,因为我每次按enter键都将再次成为另一个输入字符,并且永远不会结束

我也不想给任何退出字符来决定输入的结束,比如“退出”。如何处理这个

ArrayList<String> emp=new ArrayList<String>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
h=br.readLine();
while((h=br.readLine()) != null)
{           
   emp.add(h);         
}
ArrayList emp=new ArrayList();
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
h=br.readLine();
而((h=br.readLine())!=null)
{           
环境管理署增补(h);
}

您可以添加一个请求用户输入的线程,然后在每个新输入上重新启动一个计时器。当计时器过期时,它会关闭用户输入线程

    Scanner reader = new Scanner(System.in);
    System.out.println("Enter something: ");
    String s=reader.nextLine();
    System.out.println("You enetered: " + s);
其结果是:

Enter something: 
Mike,Elofson
You enetered: Mike,Elofson
一般来说,根据我的经验,扫描仪更容易使用,也更常用于输入。

一个“输入”(即直接按Enter键)或两个/三个连续的“输入”如何


我认为等一段时间不是个好主意。无论如何,你需要一些输入来表示结束。

我也不想给出,不知道你的意思。你是说你希望他们能够输入'exit'和'exit'?如果是这样,只需将它添加到while循环,
&&!h、 等于(“退出”)
不,我不希望他们键入任何类似“退出”的字符,并验证它以检查输入的结尾。可能重复请参阅for
ready()
。我个人使用BufferedReader来读取输入,而不是每次需要时都使用扫描仪,因为我个人在扫描仪方面有问题,但BR始终按预期工作。