有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java遍历ArrayList

我目前正试图通过一个ArrayListiterate,看看它是否包含我输入到winners数组中的以下数字。但是,票证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) 个答案

  1. # 1 楼答案

    使用添加的包含方法尝试此票证类:

    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;
        }
    }
    
  2. # 2 楼答案

    不能使用该类不存在的方法。因为您没有为Ticket定义contains,所以它不起作用并不奇怪

    根据推论,winners是一个int[]。在这种情况下,您需要在Ticket的内部定义一个新方法contains

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

    根据给定彩票中奖号码的存储方式,以及您如何定义不同的中奖条件,您可以在这里处理您的逻辑

    如果它们存储为数组,并且需要精确匹配,那么可以使用^{}进行匹配

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