Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 遍历ArrayList_Java_Arraylist_Iterator_Contains - Fatal编程技术网

Java 遍历ArrayList

Java 遍历ArrayList,java,arraylist,iterator,contains,Java,Arraylist,Iterator,Contains,我目前正在尝试遍历一个ArrayList,看看它是否包含我输入到winners数组中的以下数字。但是,ticket对象不允许我使用.contains方法,这是我得到错误的地方。你知道如何解决这个问题吗 int[] winners = new int[6]; for(int i = 0; i < winners.length; i++) { winners[i] = in.nextInt(); } in.close(); Scanner sc

我目前正在尝试遍历一个ArrayList,看看它是否包含我输入到winners数组中的以下数字。但是,ticket对象不允许我使用.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;
    }**

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

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

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

如果它们存储为数组,并且您需要精确匹配,则可以使用

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

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

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

错误是什么?你的票子类包含,包含方法吗?票子类是什么?那么,初学者,现在知道是什么导致了错误?你不想看看中奖者是否包含票子的号码吗?谢谢,这就是我大部分困惑的地方
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;
    }
}