Java readLine()等待控制台的输入
我正试图从控制台读几行文字。行数事先不知道。方法读取一行,但在最后一行之后,它会等待控制台的输入。为了避免这种情况,应该做些什么 请参阅下面的代码片段:Java readLine()等待控制台的输入,java,console,bufferedreader,readline,lines,Java,Console,Bufferedreader,Readline,Lines,我正试图从控制台读几行文字。行数事先不知道。方法读取一行,但在最后一行之后,它会等待控制台的输入。为了避免这种情况,应该做些什么 请参阅下面的代码片段: public static String[] getLinesFromConsole() { String strLine = ""; try { // Get the object of DataInputStream InputStreamReader isr = new InputS
public static String[] getLinesFromConsole() {
String strLine = "";
try {
// Get the object of DataInputStream
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String line = "";
while ((line = br.readLine()) != null)
strLine += line + "~"; //edited
isr.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
return strLine.split("~");
}
下面的代码可能会修复,用特定于需求的字符串替换文本
exit
public static String[] getLinesFromConsole() {
String strLine = "";
try {
// Get the object of DataInputStream
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String line = "";
while ((line = br.readLine()) != null && !line.equals("exit") )
strLine += br.readLine() + "~";
isr.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
return strLine.split("~");
}
从控制台读取时,您需要定义一个“终止”输入,因为控制台(与文件不同)永远不会“结束”(即使在程序终止后,它仍会继续运行) 您的问题有几种解决方案:
java…<输入文件
shell将把您的进程与输入文件连接起来,您将得到一个EOF
PS:您的代码中有一个bug。如果调用
readLine()
两次,它将跳过每一行。我猜代码永远不会退出while循环。没错。一个想法是,当你读一些特定的东西时,比如“退出”,你可能会中断。这不应该是而((line=br.readLine())!=null)strLine+=**line**+“~”代码>?您应该使用某些条件退出while循环,例如,让用户类型exit您似乎每秒钟跳过一行,我怀疑这是不正确的,并且您正在等待输入流的结束,这对于大多数控制台用户来说是很难键入的。;)当((line=br.readline())!=null)strLine+=//此处br.readline()+“~”;第二次调用readline时,我会尝试您的代码;控制台开始等待另一个字符;您应该使用行变量OldCurmudgeon来建议此解决方案。您可以确定退出命令。是否可以在没有退出字符串的情况下结束readLine执行?要重新发送文本输入过程,您需要一些“文本”来指示退出或退出。