2012-04-03 39 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子句搜索多個匹配項。