- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一系列在方法期间检查的答案。然后检查 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 上找到整个游戏的代码:
最佳答案
更改此方法:
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 中遇到异常处理问题,这是我的代码。当我尝试运行此行时出现编译器错误:throw new MojException("Bledne dane");。错误是: exception MojE
我刚刚开始学习asp.net。在你们的支持下,我希望我能从这个论坛学到更多东西。 我的问题是, 我在 asp.net 页面中有一个 TabContainer1,因为每个选项卡面板中有多个类似 (60)
我是一名优秀的程序员,十分优秀!