visual studio中导入algs4.stdin和util.scanner的红黑二叉搜索树的java打印失败

blpfk2vs  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(292)

我尝试在一个红黑二叉搜索树的旧java程序中获取树的打印输出(即st.keys()),使用:
导入java.util.scanner;

导入edu.princeton.cs.algs4.stdin;
导入edu.princeton.cs.algs4.stdout;
它似乎不起作用的原因我不知道。我也试过调试。在两个版本的main()中,程序在第一个for循环之后停止。任何方向正确的帮助都会很好。
下面是带有终端输出的代码的一些图像:main()的替代版本main()的初始版本
使用import edu.princeton.cs.algs4.stdin初始化main():

public static void main(String[] args) {
        RedBlackBST<String, Integer> st = new RedBlackBST<>();
        for (int i = 0; !StdIn.isEmpty(); i++) {
            String key = StdIn.readString();
            st.put(key, i);
        }
        StdOut.println();
        for (String s : st.keys())
            StdOut.println(s + " " + st.get(s));
        StdOut.println();
        //StdOut.println(st.check());
        st.delete("t");
        System.out.println(st.keys());
    }

使用import java.util.scanner的可选main():

public static void main(String[] args) {
        RedBlackBST<String, Integer> st = new RedBlackBST<>();

        Scanner input = new Scanner(System.in);

        for(int i=0; input.nextLine() != ""; i++){
            String key = input.nextLine(); // Use in.nextLine() for line-by-line reading

            st.put(key, i);

            System.out.println(input);
        }
        input.close();

        for (String s : st.keys()){
            System.out.println(s + " " + st.get(s));
        System.out.println();
        //StdOut.println(st.check());
        st.delete("t");
        System.out.println(st.keys());
        }
    }

终端输出(包括用户输入):

/usr/lib/jvm/java-11-openjdk-amd64/bin/java -Dfile.encoding=UTF-8 @/tmp/cp_do3cqf4bgpqm37l69q1dfdnql.argfile RedBlackBST 
t
a
l
l
t
r
e
e
s
^Z
[1]+  Stopped                 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Dfile.encoding=UTF-8 @/tmp/cp_do3cqf4bgpqm37l69q1dfdnql.argfile RedBlackBST
juzqafwq

juzqafwq1#

我用ctrl+d得到正确的输出,我用ctrl+z退出

相关问题