2015-09-03 3 views
-2

В настоящее время я пытаюсь выполнить iterate через ArrayList и посмотреть, содержит ли он следующие числа, которые я вводил в массив победителей. Однако билет object не позволит мне использовать метод .contains(), в котором я получаю сообщение об ошибке. Любая идея о том, как обойти это?Итерация через ArrayList

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; 
    }** 
+1

Что такое * на * ошибка? – erip

+2

У вас есть класс 'Ticket',' contains() 'метод? –

+0

А что такое класс 'Ticket'? – sje397

ответ

0

Вы не можете использовать метод, который не существует для этого класса. Поскольку у вас нет contains, определенного для Ticket, я не удивлен, что он не работает.

От winners является int[]. В этом случае вы должны определить новый метод contains внутри Ticket.

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

В зависимости от того, как выигрышные номера для данного билета сохраняются, и учитывая то, как вы определяете различные условия победы, вы бы справиться с вашей логикой здесь.

Если они сохранены в виде массива и вы хотите получить точное соответствие, то для этого вы можете использовать Arrays.equals.

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

Спасибо, вот где я был в замешательстве по большей части – Beginner

-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; 
    } 
} 
Смежные вопросы