【问题标题】:How do I cycle console output text in a java application?如何在 Java 应用程序中循环控制台输出文本?
【发布时间】:2014-11-11 18:21:50
【问题描述】:

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

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

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

现在,我想知道这一点:显然 println() 将向控制台输出 bajillion 行。我不知道如何措辞(这是很多应用程序在检查文件系统时会做的事情),但我想这样做,所以该行显示为“测试:[word]”并且单词在保持“测试:“静态,因为它遍历字符串。我将如何实现这一目标?

【问题讨论】:

    标签: java user-interface console


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2011-04-07
      • 2017-11-26
      相关资源
      最近更新 更多