Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 命令行立即返回新行_Java_Command Line_User Input - Fatal编程技术网

Java 命令行立即返回新行

Java 命令行立即返回新行,java,command-line,user-input,Java,Command Line,User Input,我正在编写一个命令行Java应用程序。我有一个处理终端输入/输出的类。我想问一个简单的是/否问题。 这是我的代码: public boolean yn(String prompt) { // ask a yes/no question out(prompt); try { while(true) { char result = (char) br.read(); out("\n");

我正在编写一个命令行Java应用程序。我有一个处理终端输入/输出的类。我想问一个简单的是/否问题。 这是我的代码:

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是设置为的BufferedReader

br = new BufferedReader(new InputStreamReader(System.in));
out只输出文本

System.out.print(text);
问题是br.read()在第一次没有输入时立即返回新行。


我对Java相当陌生,所以请对我放松。

此方法从控制台读取,直到按下[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();
}
public final String ConsoleReadln(String promptStr){
StringBuffer retSb=新的StringBuffer();
试一试{
系统输出打印(promptStr);
字节[]buf=新字节[1];
System.in.skip(System.in.available());
int i=0;
字符c=0;
做{
如果(系统英寸读数(buf,0,1)>0){

i=(int)buf[0];如果(i)您尝试过使用readln:
char result=br.readLine().charAt(0);
另外,您可以显示调用此方法的代码吗?@hovercraftfullofels readln代码抛出索引超出范围异常。调用它的行只是
boolean cont=terminal.yn(Messages.noMatchConfirmation);
无法重现您的问题。这对我来说很好:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));char result=(char)br.read();System.out.println(result);
是的,我敢打赌问题在于您如何尝试使用此方法。