java - 灯笼终端输入不断重复

标签 java input while-loop terminal lanterna

我正在用灯笼制作一个简单的基于 java 文本的刽子手(主要是因为控制台中的清晰屏幕和用户输入)。

我的用户输入有问题:一旦我输入输入并通过代码运行它,它每次都会再次使用相同的输入,我无法再插入另一个输入。

这是我的代码:

while (hidenWord.equals(word) == false) {
        //start of basic visual setup
        terminal.moveCursor(0,0);
        cursorPlace[0] = 0;cursorPlace[1] = 0;
        normalSetup(hidenWord, kansen, choose[categorie]);
        terminal.moveCursor(12, cursorPlace[1] - 3);
        //end of basic visual setup
        while (bool == false) {
            Thread.sleep(5);
            Key key = terminal.readInput();
            try {
                if (key.getKind() == Key.Kind.NormalKey) {
                    guess = (key).toString().substring(key.toString().lastIndexOf(' '));
                    terminal.putCharacter(key.getCharacter());
                }
            } catch (Exception err) {
            }
            try {
                if (key.getKind() == Key.Kind.Backspace) {
                    terminal.clearScreen();
                    terminal.moveCursor(0, 0);
                    cursorPlace[0] = 0;
                    cursorPlace[1] = 0;
                    normalSetup(hidenWord, kansen, choose[categorie]);
                    terminal.moveCursor(12, cursorPlace[1] - 3);
                }
            } catch (Exception err) {
            }
            try {
                if (key.getKind() == Key.Kind.Enter && guess != null) {
                    bool = true;
                }
            } catch (Exception err) {
            }
        }
        if(word.contains(guess)){
            guesses.add(guess);
            hidenWord = addHidden(guess, word);
        }else{
            kansen --;
            miss.add(guess);
        }
        //end of other visual objects
    }

谢谢!

最佳答案

while (hidenWord.equals(word) == false) {
    // ...

    while (bool == false) {
        // ...

        try {
            if (key.getKind() == Key.Kind.Enter && guess != null) {
                bool = true;
            }

第一次看到“Enter”时,将 bool 设置为 true, 之后您再也不会将其重置回 false。 因此,在外层 while 循环的下一次迭代中, booltrue,因此不会再次进入内部 while 循环。

根本不使用 bool 会更简单、更好:

    while (true) {
        // ...

        try {
            if (key.getKind() == Key.Kind.Enter && guess != null) {
                break;
            }

关于java - 灯笼终端输入不断重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208798/

相关文章:

linux - 查找重复对比较两个文件

java - 如何在 Java 中安全地访问数组线程?

javascript - 输入类型按钮在按下时会改变颜色?

c - 需要从 do/while 和多个 while 循环返回一个值 - C

c - WHILE 循环显示与 FOR 循环不同的输出

javascript - 将多个选择转换为常规选择

java - 提高与 ViewFlipper 一起使用的实例化和膨胀 View 的性能

java - 如何从 SQL 中的两个表中获取匹配的行,而无需从 java 中重复调用

java - JOptionPane 找不到符号

Python 脚本进入不正确的 if 语句