如何在Java应用程序中循环控制台输出文本?

时间:2014-11-11 18:21:50

标签: java user-interface console

我正在制作一个简单的破解应用程序。部分应用程序通过dictionary.txt运行并尝试其中的单词。如果返回一个简单的字典单词,它将返回1。 (出于作业的目的,我们并不担心大写字母。)这是它通过字典攻击的片段:

for(String s : rf.openFile()){
            System.out.println("Testing: " + s)
            if(password.equalsIgnoreCase(s)){
                return 1;
            }
        }

rf.openFile()是一个包含加载txt后字典的String []。

现在,我想知道这一点:很明显,println()会向控制台输出一条bajillion线。我不知道如何说出来(这是许多应用程序在检查文件系统时所做的事情),但我想把它改为“测试:[word]”这一行改为“保持”测试:“静态,因为它遍历字符串。我将如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

您无法通过控制台执行此操作。好吧,不是没有使用charva,它是java的ncurses包装器。您无法使用java控制控制台本身。你只能写它并从中读取。你想要完成的是基本上把这个词写到控制台,清理控制台,然后写下一个单词。

我想你可以在文本后面向控制台写入X个空行,给它你想要的外观,但向上滚动会显示很多空行。

我说最简单的方法就是拥有一个带有JLabel的简单JFrame:

public static void main(final String[] args) {
    final JFrame frame = new JFrame("Test");
    final JLabel label = new JLabel();
    frame.add(label);
    frame.setSize(100, 30);
    frame.setVisible(true);
    checkDictionary(label);
}

public static int checkDictionary(final JLabel label) {
    for (final String s : rf.openFile()) {
        label.setText("Testing: [" + s + "]");
        if (password.equalsIgnoreCase(s)) {
            return 1;
        }
    }
    return -1;
}