通过ArrayList迭代

时间:2015-09-03 03:30:16

标签: java arraylist iterator contains

我正在尝试通过iterate ArrayList并查看它是否包含我输入到获胜者数组中的以下数字。但是,票证object将不允许我使用.contains()方法,这是我收到错误的地方。关于如何解决这个问题的任何想法?

int[] winners = new int[6];
for(int i = 0; i < winners.length; i++)
    {
        winners[i] = in.nextInt();
    }
    in.close();

    Scanner scan = new Scanner(file);
    ArrayList<Ticket> info = new ArrayList<Ticket>();

    for(int i = 0; i < lim; i++)
    {
        String name = scan.nextLine();
        String num = scan.nextLine();

        String[] t = num.split(" ");
        int[] tichold = new int[t.length];

        for(int j = 0; j < t.length; j++)
        {
            tichold[j] = Integer.parseInt(t[j]);
        }

        Ticket ticket = new Ticket(name, tichold);
        info.add(ticket);
    }

    **for(Ticket t : info)
    {
        if(t.contains(winners))
        {
            System.out.println("Yes");
        }
    }**

    scan.close();
}

**public static class Ticket
{
    public String name;
    public int[] tarray;

    public Ticket(String name, int[] tarray)
    {
        this.name = name;
        this.tarray = tarray;
    }**

2 个答案:

答案 0 :(得分:0)

您不能使用该类不存在的方法。由于您没有为contains定义Ticket,因此我对它无法正常工作并不感到惊讶。

根据推断,winnersint[]。在这种情况下,您需要在contains内定义一个新方法Ticket

public boolean contains(int[] winningNumbers) {
    // logic here
}

根据给定门票的中奖号码的存储方式,以及如何定义不同的获胜条件,您可以在此处理您的逻辑。

如果它们存储为数组并且您想要完全匹配,那么您可以使用Arrays.equals

public boolean contains(int[] winningNumbers) {
    return Arrays.equals(numbers, winningNumbers);
}

答案 1 :(得分:-1)

尝试使用此Ticket类并添加包含方法:

public class Ticket {
    public String name;
    public int[] tarray;

    public Ticket(String name, int[] tarray)
    {
        this.name = name;
        this.tarray = tarray;
    }

    public boolean contains(int[] winners) {
        for (int i = 0; i < winners.length; i++) {
            for (int j = 0; j < tarray.length; j++) {
                if (winners[i] == tarray[j])
                    return true;
            }
        }
        return false;
    }
}