java - 如何在 If 语句中使用数组

标签 java android arrays string if-statement

我是 Java 新手。我不太确定如何在 Java 中有效地使用数组。我可能无法使用正确的术语,所以我会尝试用代码向您展示。 基本上,这是我的数组。

int[] arrayCount = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

我想设置我的 if 函数,以便(假设 arrayCount[1] 是默认值……如果该数组处于 [1] 的第一个状态,并且“one”.equals(match)然后它将数组设置为 arrayCount[2] 然后从那里开始。基本上,如果“one”= match,它应该将 arrayCount 设置为 2,如果“two”= match 并且第一个 if 语句已经执行,它将播放测试声音。最终这个链会一直到 100,但这只是为了测试。

for (String match : matches) {
                if (arrayCount[1]== 1 && "one".equals(match)) {
                    testSound.start();
                    arrayCount[2]=2; 
                } else if (arrayCount[2]==2 && "two".equals(match)) {
                    testSound.start();

                }

最佳答案

希望我正确理解了这个问题。您想让用户按顺序输入单词“一”、“二”、“三”等,并在成功输入的每一步播放测试声音吗?

在这种情况下,请考虑以下事项:

import java.util.Queue;
import java.util.LinkedList;

Queue<String> inputs = new LinkedList<String>();
inputs.push("one");
inputs.push("two");
inputs.push("three");
// etc
// Then to check the user input
for (String match : matches) {
  if (match.equals(inputs.peek())) {
    inputs.pop(); // Removes the element you just matched
    testSound.start();
  }
}

请注意,这假设您希望在每个步骤中执行相同的操作。如果您能更详细地描述您对“正确响应”行为的要求,我可以提供更准确的答案。

我们使用上面的队列,因为它展示了 First-In-First-Out订购。这意味着匹配项必须按照它们添加的顺序出现(上面的所有推送语句)。在循环内部,当匹配成功时,将检查下一个所需的匹配项。例如,对于包含(“三”、“二”、“一”)的队列和包含(“一”、“二”、“三十”)的匹配,循环将执行如下:

  1. 匹配“一”将与队列的头部“一”进行比较
  2. 这匹配,所以我们“弹出”头部,将 ("three", "two") 留在队列中
  3. 下一场比赛,“二”将与队列的头部(现在是“二”)进行比较
  4. 这匹配,所以我们再次弹出头部,在队列中留下(“三”)
  5. 下一场比赛,“三十”将与队首(现在是“三”)进行比较
  6. 这不匹配,因此队列不会发生进一步的变化

如果你想对每个匹配都有特定的行为(即,当“一个”匹配时做一些事情,然后当“两个”匹配时做其他事情,等等)你可以像下面这样连接(除了以上)

public interface MatchAction {
  public void doTheThing();
}

Map<String, MatchAction> actionMap = new HashMap<String,MatchAction>();
// Fill this bad boy up
actionMap.put("one", new MatchAction() { public void doTheThing() { /* do stuff */ } });
// Etc for each action (you can reuse instances here if some actions are the same)
// Then, we modify the check above to be:
for (String match : matches) {
  if (match.equals(inputs.peek())) {
    String input = inputs.pop();
    MatchAction action = actionMap.get(input);
    if (action != null) action.doTheThing();
  }
}

关于java - 如何在 If 语句中使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555161/

相关文章:

Java 包与文件夹结构?有什么区别

android - 以编程方式添加的 Spinner 的 OnItemSelectedListener 不会触发

arrays - 为什么 Perl 不允许我将哈希引用的成员取消引用到数组中?

Java:透明 JPanel 上的 MouseEvent

java - 无法解析类型 java.util.Comparator

java - 在使用 Maven 进行功能测试之前部署 jBoss 7

java - 你们支持 Android 应用程序有多早?

android - getIntent().getStringExtra() 返回 null

javascript - 如何使用两个数组将复选框的值设置为 true?

javascript - 如何将字符串压入数组?