0

我正在统一创建一个基本程序,在其中检查列表数组索引根据值执行特定操作,然后增加索引。我遇到的问题是数组始终存储在索引 0 中并且始终等于 -1 .

    public class numGen(){  
    int val;
    int i = 0;

    System.Random rnd = new System.Random();
        val = rnd.Next(1, 5);
        arrayList.Add(val);

        Debug.Log("val"+val);
        Debug.Log("array"+arrayList.IndexOf(i));

        if (arrayList.IndexOf(i) == 1)
         {
                Debug.Log("action1");
                i++;
         }
        else if (arrayList.IndexOf(i) == 2)
                {
                  Debug.Log("action2");
                  i++;
                }
           //and so on
    }

我在日志中使用了调试,所以当我检查存储在索引中的值是 -1 时,val 将输出一个预期值,例如 2,它被添加到数组中。

不确定 int 值如何或为何发生变化。

4

3 回答 3

4

这里的问题是对如何ArrayListIndexOf()工作的误解。

ArrayList.IndexOf()

搜索指定的 Object并返回ArrayList 中从指定索引开始并包含指定数量的元素的元素范围内第一次出现的从零开始的索引。

所以你的例外来自:

ArrayList 中从 startIndex 开始的元素范围内第一次出现 value 的从零开始的索引,如果找到,则包含 count 个元素;否则,-1。


我认为你正在寻找这样的东西:

ArrayList.Item()

获取或设置指定索引处的元素。

也可以

此属性提供了使用以下语法访问集合中特定元素的能力: myCollection[index]

你的例子:

if (arrayList[i] == 1)
{
   // if true..
}
于 2017-03-08T14:54:56.033 回答
2

arrayList.IndexOf(i)给出任何值为的元素的索引i。如果您想要index i处的值,则必须arrayList[I]改用。

于 2017-03-08T14:53:04.600 回答
1

IndexOf 给出你给出的值的索引。如果在数组中没有找到相等的值,则返回 -1

ArrayList arr = new ArrayList();
arr.Add(5);
arr.Add(2);
var isMinusOne = arr.IndexOf(0); //Is -1
var isZero = arr.IndexOf(5); //Is 0
于 2017-03-08T14:55:16.177 回答