2012-04-03 3 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

승리 번호가있는 행에 대해 db를 쿼리하십시오. – ControlAltDel

+1

리누스 토발즈 (Linus Torvalds)의 말을 인용 해주십시오. "3 단계 이상의 들여 쓰기가 필요하다면 어쨌든 망쳐 버리고 프로그램을 수정해야합니다." . 좋아, 내가 뭘 이해하고, 당신은 코드에서 많은 힘든 작업을하고있다. 이것을 확인하기 위해 JOIN 쿼리를 생성 할 수 있는가? –

+0

왜 알고리즘이 복잡해야하는지 이해가 안됩니다. 일단 당신이 승리 한 번호를 가지고 있다면, 왜 모든 후보를 반복하고 List containsAll 메소드를 사용할 수 없습니까? 이것은 lottoDrawString을 가져와 List 으로 변환하는 것을 의미합니다. 이것은 매우 간단합니다. –

답변

2

왜 다만 그 문제에

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

하지 간주, 왜 그냥 데이터베이스에있는 7 자리의 문자열로 로또 번호를 저장?

+0

좋은 지적도 –

+0

내가보기에 문제는 가능한 많은 일치가있을 수 있다는 것입니다. 내가 4 7 13 23 27 33 4, 4,7,13이 티켓과 일치 할 수 있다고 말하면, 13, 23, 27은 일치 할 수 있습니다. – Arianule

0

한 가지 아이디어는 테이블 필드로 줄 번호를 추가하여 검색하고 대신 번호를 만들고 확인하면서 개체로 처리하는 것입니다. Loterry라고 말하면됩니다.

클래스 복권

{INT 라인 값;

값 필드를 확인하고 수표가 맞으면 줄을 반환하십시오. 희망 바란다 :)

+0

단 하나의 열이 있다고 생각되는 이유는 무엇입니까? 적어도 8 개의 열이있는 것처럼 보입니다. – Taymon

+0

사실, 게시물을 편집합니다. –

0

"프로그래밍"을 많이하지 않고도 검색을 수행 할 수 있습니다. 당신을 위해 그것을 할 수있는 쿼리를 작성 :

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

는 위의 추첨 번호 "number" 표시된 필드에 저장되어 있다고 가정합니다. AND 또는 OR 절을 사용하여 여러 일치 항목을 검색 할 수도 있습니다.