我正在编写命令行Java应用程序。我有一个处理终端输入/输出的类。我想问一个简单的是/否(y / n)问题。 这是我的代码:
public boolean yn(String prompt) {
// ask a yes/no question
out(prompt);
try {
while(true) {
char result = (char) br.read();
out("\n");
if( ( (Character) Character.toLowerCase(result) ).toString().equals("y") ) {
return true;
} else if( ( (Character) Character.toLowerCase(result) ).toString().equals("n") ) {
return false;
}
// not y or n
out(Messages.informYN);
}
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
br 是一个设置为
的BufferedReaderbr = new BufferedReader(new InputStreamReader(System.in));
out 只输出文字
System.out.print(text);
问题是br.read()在没有给出任何输入的情况下第一次立即返回一个新行。
我对Java很新,所以请放轻松。
答案 0 :(得分:0)
此方法从控制台读取,直到按下[Enter]:
public final String ConsoleReadln(String promptStr) {
StringBuffer retSb = new StringBuffer();
try {
System.out.print(promptStr);
byte[] buf = new byte[1];
System.in.skip(System.in.available());
int i = 0;
char c = 0;
do {
if ( System.in.read(buf,0,1) > 0 ) {
i = (int) buf[0]; if (i<0) i += 0x100; c = (char) i;
if ((c != '\n') && (c != '\r')) retSb.append(c);
}
}
while ((c != '\n') && (c != '\r')) ;
} // try
catch (Exception ex) {
}
return retSb.toString();
}