3

我正在为学校做一个项目,但无法弄清楚。顺便说一句,我是一个非常初级的初学者。

我有一个二维数组,称为tickets[19][6]20 张票,每张票有 6 个整数。我正在尝试将这 20 张票与具有 6 个数字的常规整数数组进行比较winner[5]我从 .txt 文件中读取的。

两个数组的说明如下:

public static int[] winner = new int[5]
public static int[][] tickets = new int[19][5]

请记住,我对此很陌生,我提前感谢任何帮助!

编辑这是我用来将用户输入分配给我的二维数组的循环,当我经历整个事情时才意识到这是一个无限循环。我认为编写代码会更多......好吧,写作!到目前为止,似乎更像是调试的艺术。

static void ticketNumberArray(){

    int number = 1;        // which of the six numbers you need from the ticket
    int ticketCount = 1;   // which ticket (out of 20) you are currently on

    while(ticketCount<21){ // sentinel controlled while loop,
                           // will continue until the twentieth ticket is entered
        System.out.println("Please type number " +number+ " of ticket number " +ticketCount+ ".");
                           //asks for the numbers of the ticket your currently on

        Scanner keyboard = new Scanner(System.in); // initiates a scanner variable

        int ticketNumber = keyboard.nextInt();     // assigns user input to the double variable ticketNumber
                                                   // and initializes as a double

        tickets[ticketCount-1][number-1]=ticketNumber;  // assigns user input into a 2-d array

        number++;           //Sentinel variable

        if(number==7){      //loop that controls the ticket count, every 6 numbers ='s one ticket
            ticketCount++;
            number=1;
        }
    }
}
4

2 回答 2

3

首先,[ ]声明数组时输入的数字是数组的大小。因此,要创建一个包含六个项目的数组,您需要将[6]. 索引将编号为 0--> 5。

您只需要遍历数组中的票“行” tickets,并将其与获胜者数组进行比较。每一行都是一张单独的票。2D 数组中的“列”将是组成票证的单个数字。

Arrays.equal如果票证中各个号码的顺序很重要,您可以使用 Louis 的建议。0-1-2-3(即,如果中奖者是,您只能用彩票中奖0-1-2-3- 大多数彩票允许您赢得任何组合。)

for(int i=0; i < tickets.length; i++)
{
   int[] ticket = tickets[i];

   if(Arrays.equals(ticket, winner))
   {
      // This one is the winner

      // For efficiency you should probably stop looping
      break;
   }
}

编辑:

当学生使用 API 时,很多入门教授不喜欢它。因此,您必须编写自己的 equals 函数。

private static boolean areEqual(int[] a, int[] b)
{ 
   if(a == null && b == null)
       return true;

   // Not equal if one is null and the other is not     
   if(a == null || b == null)
       return false;

   if(a.length != b.length)
       return false;

   // When we get here we have to check each element, one by one
   // Implementation left as exercise :-)
}
于 2012-04-23T00:38:13.257 回答
1

票有 5 个整数还是 6 个整数?你的问题自相矛盾。

无论如何,如果您只想检查票证中的整数是否匹配——如果它们以完全相同的顺序具有完全相同的值——最简单的解决方案就是使用Arrays.equals(int[], int[]).

于 2012-04-23T00:30:52.963 回答