java - 方法追加消息的次数与相应数组中的消息的次数相同

标签 java arraylist textarea textfield

我有一系列在方法期间检查的答案。然后检查 usersinout 以查看它是否与答案数组中的任何内容匹配(如果效果良好)。然而,当它发生时,我调用一个方法来删除 userInput 并显示不是有效的输入,但是它根据数组中的答案数量显示“不是有效的输入”。这就是我的意思:

Type go in the box and hit enter!

Not a valid input

go

You reach a crossroads and don't know which way to go.

What do you do?

Not a valid input

Not a valid input

Not a valid input

Not a valid input

Not a valid input

在我输入“go”之前,我自己输入了“g”,它返回“不是有效的输入”,因为该部分的数组中的唯一答案是“go”。然而,在下一节中,您可以看到它多次返回“不是有效的输入”,因为与该部分对应的数组中有 5 个正确答案。无论数组中的答案有多少,如何让它每次只返回一次?

可以在 GitHub 上找到整个游戏的代码:

https://github.com/addrum/TextGame/

最佳答案

更改此方法:

public void check(String userInput) {
    boolean gotItRight= false;
    ArrayList<String> levelAnswers = answers.getAnswersForLevel(currentLevel);
    for (String answer : levelAnswers) {
        if (userInput.toLowerCase().equals(answer)) {
            messageDisplay.append("\n \n" + userInput + "\n");
            commandInput.setText("");
            messageDisplay.append("\n" + messages.getNextMessage());
            currentLevel++;
            getCurrentLevel();
            gotItRight= true;
            break;
        }
    }
    if (!gotItRight) {
        notValid();
    }
}

为什么会发生这种情况?

好吧,您在这一行中迭代了第一级的五个答案:for (String answer : levelAnswers),每次您评估答案不匹配时,您都会显示答案是错误的。例如,如果答案是正确的,但对于最后一个(第 5 个选项),您将得到四次错误,但最后它是正确的。

此外,您可以执行类似的操作来避免 for 循环:

public void check(String userInput) {
    boolean gotItRight= false;
    ArrayList<String> levelAnswers = answers.getAnswersForLevel(currentLevel);

    if (levelAnswers.contains(userInput.toLowerCase()) {
        messageDisplay.append("\n \n" + userInput + "\n");
        commandInput.setText("");
        messageDisplay.append("\n" + messages.getNextMessage());
        currentLevel++;
        getCurrentLevel();
        gotItRight= true;
        break;
    }
}

关于java - 方法追加消息的次数与相应数组中的消息的次数相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17025576/

相关文章:

java - libgdx字体高度

java - 用于后端服务器测试的快速 Java UI 工具

java - 我应该为 bean 定义中的 ActiveMQTopic 属性设置什么?

java - 将 ArrayList 拆分为多个 ArrayList

java - Mockito 的列表问题

php - jQuery - 单击链接/按钮时显示文本框

javascript - 计算选中的复选框和文本区域的问题

java - Activity 2 中 YouTube 播放器中 Activity 1 中的字符串

java - 如何计算数组中的特定字符 - Java

css - 文本区域中的绝对定位对齐