如何使用带有If语句的Array

时间:2013-05-15 01:03:13

标签: 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(匹配)然后它将数组设置为arrayCount [2],然后从那里开始。基本上,如果“one”=匹配,它应该将arrayCount设置为2,如果“two”=匹配AND第一个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();

                }

4 个答案:

答案 0 :(得分:3)

希望我能正确理解这个问题。您希望用户按顺序输入单词“one”,“two”,“three”等,并在成功输入的每一步播放测试声音?

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

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顺序。这意味着匹配必须按添加顺序出现(上面的所有推送语句)。在循环内部,当成功匹配发生时,将检查下一个期望的匹配。例如,如果Queue包含(“three”,“two”,“one”)和matches包含(“one”,“two”,“30”),则循环将执行如下:

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

    如果你想对每个匹配都有特定的行为(即,当“一个”匹配时做某事,那么当“两个”匹配时做其他事情等)你可以连接类似下面的东西(除了以上)

    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();
      }
    }
    

答案 1 :(得分:1)

基本上你要找的是像这样的HashMap:

Map<String,Integer> map = new HashMap<String,Integer>();
map.put("one",1);
map.put("two",2);

HTH

答案 2 :(得分:0)

“如果该数组处于[1]的第一个状态......它将数组设置为arrayCount [2]”没有意义。数组没有“状态”。

数组是制作大量变量或同类型对象的简便方法。而不是像这样声明5 int个变量:

int num1 = 234;
int num2 = 635;
int num3 = 3568;
int num4 = 23;
int num5 = 745;

你可以这样做:

int[] nums = {234, 635, 3568, 23, 745};

然后你可以像这样引用它们:

System.out.println(nums[2]);

这将打印数字3568(因为数组从0开始,nums[0]将为234)。

请解释一下你想要完成的事情(尽量不要在你的描述中使用代码),我会给你一些符合你想要的代码。

答案 3 :(得分:0)

根据我的理解,您可能想要创建一个这样的arraylist:

String[] array = ["zero", "one", "two"];
ArrayList<String> mArrayList = new ArrayList<String>(Arrays.asList(array));
int index = mArrayList.indexOf(user_input);
//use the index to play the appropriate sound...