2011-12-09 49 views
1

我有兩個數組,我需要比較它們具有相同的值。如何比較兩個不同類的數組?

我得到了一個Ticket類和一個NumberGenerator類。

Ticket類中,我得到了一個包含我的「幸運數字」的數組,並且NumberGenerator包含中獎號碼。

` 公共類sammenligning

{ 公共無效喬恩() { 如果(滿足Arrays.equals(TicketRegister.getticketReg(),LottoMachine.listOfWinningNumbers())){ 的System.out.println( 「我們有一個勝利者!」); } } } ` 我得到的getticketReg(DNW)錯誤 (ticketReg是數組名)比較兩個數組並不需要在同一類,你可以比較

回答

0
if (Arrays.equals(aTicket.getNumbers(), aNumberGenerator.getNumbers())) { 
    System.out.println("We have a winner!"); 
} 
0

這些使用以下方法

boolean isEqual = Arrays.equals(array1(ticket class lucky numbers),array2(NumberGenerator winning numbers));

2

您應該先使用Arrays.sort對數組進行排序,然後使用Arrays.equals比較數組。

1

你應該問自己的另一個問題是在哪裏做比較?如果您將機票中的幸運數字「暴露」至世界其他地方(使用公共方法),您可以使用中斷封裝

爲了保持其私人和自我包含在Ticket,也許你應該有一個方法,你的票,這是這樣:

public boolean isWinningTicket(NumberGenerator numberGenerator) { 
    // assuming both arrays are sorted 
    return Arrays.equal(this.luckyNumbers, numberGenerator.getWinningNumbers()); 
} 
0

票務類:

public class Ticket { 
private Integer [] tickets=new Integer[]{80,35,41}; 

    public Integer[] getTickets() { 
     return tickets; 
    } 

    public void setTickets(Integer[] tickets) { 
     this.tickets = tickets; 
    } 

} 

NumberGenerator:

public class NumberGenerator { 
    private Integer [] numbers=new Integer[]{51,85,80,35,41}; 

    public Integer[] getNumbers() { 
     return numbers; 
    } 

    public void setNumbers(Integer[] numbers) { 
     this.numbers = numbers; 
    } 

} 

TestClass進行比較:

for(int i=0;i<t.getTickets().length;i++) 
     { 
      for(int j=0;j<numberGenerator.getNumbers().length;j++) 
      { 
       if(t.getTickets()[i].equals(numberGenerator.getNumbers()[j])) 
       { 
        System.out.println("Winner Number is::::"+t.getTickets()[i]); 
       } 
      } 
     } 

,如果所有元件都是相同的兩個陣列的然後使用此

boolean blnResult = Arrays.equals(t.getTickets(),numberGenerator.getNumbers());