0
有没有办法重置System.in,这样我就可以有一个新的流,让Scanner等待输入?这里是我的代码:关于System.in和流的问题
boolean run = true;
String commandLine = "";
Scanner keyboard;
Tokenizer arguments;
RecursiveDescentParser parse;
while (run){
// Command prompt
System.out.print(" ==>\t");
keyboard = new Scanner(System.in);
while (keyboard.hasNextLine()) {
commandLine += " " + keyboard.nextLine();
}
keyboard.close();
keyboard = null;
System.setIn (new FileInputStream (FileDescriptor.in) ) ;
System.setIn(System.in);
keyboard = new Scanner(System.in);
arguments = new Tokenizer(commandLine);
commandLine = "";
parse = new RecursiveDescentParser(arguments, false);
run = parse.parseStartSymbol();
}
}
一旦这个计划已经运行一次,hasNextLine()将返回false无限期提示一个问题我该如何解决这个问题?我可以重新设置流吗?感谢您的帮助。
你可以详细说明一下你的意思,让我的代码的其余部分采取输入流的工作。 – user633658 2011-02-25 06:42:24
@ user633658:那么,System.in有什么特别之处?如果你真的需要重置它,这表明你在其他地方使用它。该代码是否必须*知道*它正在使用System.in?你不能将System.in作为参数传递给构造函数吗? – 2011-02-25 07:00:04
问题是因为代码是我只能从控制台读取数据或使用扫描器重定向一次,因为system.in问题hasNextLine()无限期地返回false。 – user633658 2011-02-25 07:04:23