2014-11-20 1 views
0

이것은 학교 프로젝트입니다. 그것은 빙고 게임이고, 제가하고있는 부분에 대한 지시 사항은 2D 배열을 사용하여 빙고 카드를 채우는 것입니다. 첫 번째 (B) 열은 1에서 15 사이의 임의의 숫자가 있어야하며 반복되는 숫자는 없습니다. 두 번째 (I) 열은 16-30 사이의 랜덤 (randoms), 31-45 사이의 세 번째 (N) 등이 있어야합니다. 카드를 채우고 표시하도록 설정했는데 반복이 나타납니다. 특정 열의 각 행에 대해 난수를 확인하여 이미 사용되었는지 확인하고 필요에 따라 해당 수를 변경하는 방법을 알아낼 수 없습니다. 나는 논리적으로해야 할 일을 이해하지만, 어떻게 코딩해야할지 모른다. B 섹션 아래에서 내가 시작하려고 노력한 곳입니다. 나는 수많은 것을 시도했지만 아무 소용이 없습니다. 그들을 허용 범위의 값 가득2D 배열 열에 고유 한 난수를 채우십시오. Java

import java.util.Random; 

public class BingoCard 
{ 
    Random randNum = new Random(); 
    int[][] numberCard = new int[5][5]; 
    boolean[][] shadowCard = new boolean[5][5]; 

    /** Constructor */ 
    // set up 2D arrays for bingo cards, and card comparison 
    public BingoCard() 
    { 
    // create number card 
    // fill B column with random numbers from 1 to 15 
    for(int i = 0; i < numberCard.length; i++) 
    { 
     this.numberCard[i][0] = randInt(1, 15); 
     // check for double numbers and recall a random 
     while(this.numberCard[i][0] != numberCard[i][0]) 
     { 
      i++; 
     } 
     if(this.numberCard[i][0] == numberCard[i][0]) 
     { 
      numberCard[i][0] = randInt(1, 15); 
     } 
    } 
    // fill I column with random numbers from 16 to 30 
    for(int j = 0; j < numberCard.length; j++) 
    { 
     numberCard[j][1] = randInt(16, 30); 
     // check for double numbers and recall a random 

    } 
    // fill N column with random numbers from 31 to 45 
    for(int k = 0; k < numberCard.length; k++) 
    { 
     numberCard[k][2] = randInt(31, 45); 
     numberCard[2][2] = 0; // free space 
     // check for double numbers and recall a random 

    } 
    // fill G column with random numbers from 46 to 60 
    for(int m = 0; m < numberCard.length; m++) 
    { 
     numberCard[m][3] = randInt(46, 60); 
     // check for double numbers and recall a random 

    } 
    // fill O column with random numbers from 61 to 75 
    for(int n = 0; n < numberCard.length; n++) 
    { 
     numberCard[n][4] = randInt(61, 75); 
     // check for double numbers and recall a random 

    } 

    // create shadow card to compare to main card 
    for(int i = 0; i < shadowCard.length; i++) 
    { 
     for(int j = 0; j < 5; j++) 
     { 
      shadowCard[i][j] = false; 
      shadowCard[2][2] = true; 
     } 
    } 

    } 

/** Methods */ 

// method to generate a random number in intervals 
private int randInt(int min, int max) 
{ 
    int random; 
    random = randNum.nextInt(max - min) + min; 
    return random; 
} 

// method to print the numberCard 
public String printNumCard() 
{ 
    String string = ""; 
    for(int row = 0; row < numberCard.length; row++) 
    { 
     for(int col = 0; col < numberCard[row].length; col++) 
     { 
      System.out.print(numberCard[row][col] + " "); 
     } 
     System.out.println(); 
    } 
    return string; 
} 




    /** main method for testing */ 
    public static void main(String[] args) 
    { 
     BingoCard bc = new BingoCard(); 
     bc.printNumCard(); 

    } 


} 

답변

0

설정 벡터, 및 shuffle : 여기 내 코드입니다, 도와주세요. 그런 다음 셔플 링 된 세트의 첫 번째 N을 선택하십시오. N은 빙고 카드의 주어진 열에있는 값의 수이며, 그 열로 복사됩니다.