Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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';s Scanner类:在Bash中使用左键和右键_Java_Bash_Command Line - Fatal编程技术网

Java';s Scanner类:在Bash中使用左键和右键

Java';s Scanner类:在Bash中使用左键和右键,java,bash,command-line,Java,Bash,Command Line,我对Linux/Bash不太熟悉,所以我真的找不到合适的术语来搜索 以片段为例: public class Main { public static void main(String[] args) { java.util.Scanner keyboard = new java.util.Scanner(System.in); while(true) { System.out.print("$ "); Str

我对Linux/Bash不太熟悉,所以我真的找不到合适的术语来搜索

以片段为例:

public class Main {
    public static void main(String[] args) {
        java.util.Scanner keyboard = new java.util.Scanner(System.in);
        while(true) {
            System.out.print("$ ");
            String in = keyboard.nextLine();
            if(in.equals("q")) break;
            System.out.println("    "+in);
        }
    }
}
如果我使用Bash在Linux机器上运行它,我就不能使用任何箭头按钮(顺便说一句,我只对
-和
按钮感兴趣)。例如,如果我键入“test”,然后尝试按左键返回,则会出现
^[[D
而不是我的光标返回一个位置:

$ test^[[D  
我也尝试过更新的类,但最终结果是一样的。在Windows的
cmd.exe
shell上,我没有这个问题

所以,问题是:有没有一种方法可以改变我的Java代码,这样我就可以使用箭头键,而不用Bash将它们按顺序转换,比如
^[[D
,但实际上可以移动光标

我希望我能在“编程级别”上解决这个问题。如果这不可能,那么我想我最好试试我的运气,看看我的Bash控制台上是否有需要更改的内容


提前感谢。

Bash是外壳,而不是终端;从您的程序中,您正在与终端进行对话。为了提供该功能,Bash和许多其他程序使用readline-似乎有一个for,但我从未使用过它。我相信其他人会提供更明确的答案。

另一个选项是

啊,我明白了。谢谢Jefromi提供的信息!我将研究Java Readline库。Tanks Dennis。在谷歌搜索“Java”和“Readline”时,我发现了一个看起来适合我需要的库:jline,它看起来与您建议的库相似。