2012-04-03 35 views
1

我一直忙于练习,我需要比较一个中奖彩票号码(已生成)和数据库表中现有的彩票号码。彩票比赛练习

我设法循环浏览数据库中的所有数字,然后找到与获胜的一组数字匹配,但我正在努力查明发现匹配的哪一组彩票号码。
这些数字分别放置在每个数据库列中。 这里我检索每一行中的值。

ResultSet set = state.executeQuery("SELECT * FROM numberLotto"); 
    while(set.next()) 
    { 
       String[]row = new String[7]; 
       row[0] = set.getString(1);     
       row[1] = set.getString(2); 
       row[2] = set.getString(3); 
       row[3] = set.getString(4); 
       row[4] = set.getString(5); 
       row[5] = set.getString(6); 
       row[6] = set.getString(7); 
       entries.add(row); 
      } 
String[][]listOfNumbers = entries.toArray(new String[entries.size()][7]); 

然后,我循环访问listOfNumbers,并将所有值与winningNumber的值进行比较。

Object[]winningNumber = lottoDrawString.toArray(); 

     for (int i=0; i < listOfNumbers.length; i++) 
     { 
      for (int j=0; j < listOfNumbers[i].length; j++) 
      { 
       for(int k = 0; k < winningNumber.length; k++) 
       { 
        System.out.println(listOfNumbers[i][j]); 

        if(listOfNumbers[i][j].equals(winningNumber[k])) 
        { 
         System.out.println("There is a match " + listOfNumbers[i][j] + " and " + winningNumber[k]); 
        } 
       } 

      } 
     } 

如何检索找到匹配的行?

亲切的问候

+0

查询中奖号码的数据库 – ControlAltDel 2012-04-03 20:55:25

+1

不禁要在这里引用Linus Torvalds“如果你需要超过3级缩进,无论如何你都会被搞砸,并且应该修复你的程序。” 。好吧,据我所知,你在代码中做了很多繁重的工作,你可以创建一个JOIN查询来检查它吗? – 2012-04-03 20:56:29

+0

我不明白为什么你的算法需要如此复杂。一旦你获得了数字,为什么你不能迭代所有的候选人并使用List containsAll方法?这意味着将lottoDrawString并将其转换为列表,这非常简单。 – 2012-04-03 21:07:09

回答

2

为什么不只是做

SELECT * FROM numberLotto WHERE FirstNumber = n1 AND SecondNumber = n2 AND ... 

对于这个问题,为什么不只是乐透号码存储在数据库中的七位字符串?

+0

好点也 – 2012-04-03 21:01:01

+0

我看到的问题是可以有很多可能的三个匹配。说我有号码4 7 13 23 27 33 4,4,7,13可以匹配票,13,23,27可以匹配...等等。 etc. – Arianule 2012-04-04 06:54:51

0

一个想法可能是添加行号作为表字段,检索它,而不是创建和检查数字,做一个对象,让我们说Loterry。

类彩票

{ INT线,值;

}

您检查值字段,如果它符合您的检查,返回线。希望它有帮助:)

+0

是什么让你觉得只有一列?它在我看来至少有八列。 – Taymon 2012-04-03 21:02:20

+0

没错,我会编辑帖子 – 2012-04-03 21:03:26

0

你可以在不做太多“编程”的情况下完成搜索。编写一个查询,为你做它:

String query = "SELECT * FROM numberLotto WHERE number = " + winningNumber

上述假定您的彩票号码存储在标"number"场。您也可以使用ANDOR子句搜索多个匹配项。