如何获取和索引数组对象

时间:2019-04-15 11:56:47

标签: java arrays indexing

我正在遍历一个数组,并尝试获取满足某些条件的对象的索引。我想不出办法。

我尝试使用herniPlan.indexOf(m),但收到“找不到符号-方法indexOf(hra.Mince)

public class MojeHra implements IHra {
private Mince[] herniPlan;
int index;

    public MojeHra()
    {
        herniPlan = new Mince[20];

        herniPlan[0] = Mince.LITECOIN;
        herniPlan[3] = Mince.LITECOIN;
        herniPlan[4] = Mince.BITCOIN;
        herniPlan[8] = Mince.LITECOIN;

        hracVyhral = false;
        hraSkoncila = false;
    }

    public Tah tahPocitace()
    {


        for(Mince m : herniPlan) {
            if(m.equals(Mince.LITECOIN) || m.equals(Mince.BITCOIN)){
                index = herniPlan.indexOf(m)
                    Tah tah = new Tah(index, 19);
                } 
            }
        } 

3 个答案:

答案 0 :(得分:2)

The enhanced for statementfor(... : ...))不建议索引数组。您需要the basic for statementfor(...; ...; ...))。

for (int i = 0; i < herniPlan.length; ++i) {
    Mince  m = herniPlan[i];
    // i is your index 
}

答案 1 :(得分:1)

首先,最好直接遍历索引:

for(int i = 0; i < herniPlan.length; i++) {
    if(herniPlan[i].equals(Mince.LITECOIN) || herniPlan[i].equals(Mince.BITCOIN)){
        index = i;
    }
}

我看到您的数组不完整,因此您应该检查null:

for(int i = 0; i < herniPlan.length; i++) {
    if(herniPlan[i] != null) {
        if(herniPlan[i].equals(Mince.LITECOIN) 
                || herniPlan[i].equals(Mince.BITCOIN)){
            index = i;
        }
    }
}

最后,您可能会考虑将Java Collections用于您的应用程序。我建议您使用java.util.Map,因为我认为herniPlan中的索引不仅具有索引功能,还具有特殊含义。使用java.util.Map,您可以将这些值映射到特定的Mince。

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class MojeHra implements IHra {
    private Map<Integer, Mince> herniPlan;
    int index;

    public MojeHra() {
        herniPlan = new HashMap<>();

        herniPlan.put(0, Mince.LITECOIN);
        herniPlan.put(3, Mince.LITECOIN);
        herniPlan.put(4, Mince.BITCOIN);
        herniPlan.put(8, Mince.LITECOIN);

        hracVyhral = false;
        hraSkoncila = false;
    }

    public Tah tahPocitace()
    {
        for(Entry<Integer, Mince> entry : herniPlan.entrySet()) {
            if(entry.getValue().equals(Mince.LITECOIN) 
                    || entry.getValue().equals(Mince.BITCOIN)){
                index = entry.getKey();
                    Tah tah = new Tah(index, 19);
            } 
        }
    }
}

答案 2 :(得分:0)

您可以使用index = Arrays.asList(herniPlan).indexOf(m)

Arrays.asList(herniPlan)将数组转换为ArrayList<Mince>

然后使用ArrayList类的ArrayList.indexOf()方法,它将返回对象在ArrayList中的位置。

引用:https://www.tutorialspoint.com/java/util/arraylist_indexof.htm