【问题标题】:how to compare two arrays that are in different classes?如何比较不同类中的两个数组?
【发布时间】:2012-01-16 16:40:00
【问题描述】:

我有两个需要比较的数组,它们的值相同。

我有一个 Ticket 类和一个 NumberGenerator 类。

Ticket 类中,我得到一个包含我的“幸运数字”的数组,NumberGenerator包含中奖号码。

` 公共课分门别类

{ 公共无效乔恩() { if (Arrays.equals(TicketRegister.getticketReg(),LottoMachine.listOfWinningNumbers())) { System.out.println("我们赢了!"); } } } ` 我在 getticketReg (dnw) 收到错误 (ticketReg 是数组的名称)

【问题讨论】:

    标签: java arrays class


    【解决方案1】:

    您应该首先使用 Arrays.sort 对数组进行排序,然后使用 Arrays.equals 比较数组是微不足道的。

    【讨论】:

      【解决方案2】:

      您应该问自己的另一个问题是,在哪里进行比较?如果您将彩票中的幸运数字“公开”到世界其他地方(使用公共方法),您可能破坏封装

      为了在Ticket 中保持私密和独立,也许您应该在票证上添加一个方法,如下所示:

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

      【讨论】:

        【解决方案3】:
        if (Arrays.equals(aTicket.getNumbers(), aNumberGenerator.getNumbers())) {
            System.out.println("We have a winner!");
        }
        

        【讨论】:

          【解决方案4】:

          比较两个数组不需要在同一个类中,您可以使用以下方法比较它们

          boolean isEqual = Arrays.equals(array1(票类幸运号码),array2(NumberGenerator 中奖号码));

          【讨论】:

            【解决方案5】:

            票类:

            public class Ticket {
             private Integer [] tickets=new Integer[]{80,35,41};
            
                public Integer[] getTickets() {
                    return tickets;
                }
            
                public void setTickets(Integer[] tickets) {
                    this.tickets = tickets;
                }
            
            }
            

            数字生成器:

            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());
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-02-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-04-02
              相关资源
              最近更新 更多