I have board made from class in Java with values (K, L) that will randomly fill the board. I wonder how to make the value "K" fill only certain number of cells (8 cells) randomly and the rest "L" would fill the board. My aim is to get a board where "K" appears 8 times and the rest would be "L" all randomly.
public class SimpsonsBoard {
public static void main(String[] args) {
String[][] board = new String[6][6];
for(int i=0; i<board.length; i ) {
for(int j=0; j<board.length; j ) {
double random = Math.random();
if (random < .8 ) {
board[i][j]= String.valueOf('K');
}else {
board[i][j]= String.valueOf('L');
}
System.out.print(board[i][j]);
}
}
System.out.println(" ─────────────");
System.out.println("│" board[0][0] "│" board[0][1] "│" board[0][2] "│" board[0][3] "│" board[0][4] "│" board[0][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[1][0] "│" board[1][1] "│" board[1][2] "│" board[1][3] "│" board[1][4] "│" board[1][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[2][0] "│" board[2][1] "│" board[2][2] "│" board[2][3] "│" board[2][4] "│" board[2][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[3][0] "│" board[3][1] "│" board[3][2] "│" board[3][3] "│" board[3][4] "│" board[3][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[4][0] "│" board[4][1] "│" board[4][2] "│" board[4][3] "│" board[4][4] "│" board[4][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[5][0] "│" board[5][1] "│" board[5][2] "│" board[5][3] "│" board[5][4] "│" board[5][5] "│");
System.out.println(" ─────────────");
}
}
CodePudding user response:
I will try to fill whole array with 'L' and as a next step pick 8 random places for 'K'.
You should use sth like this to print
for(int i=0; i<board.length; i ) {
System.out.println(" ─────────────");
for(int j=0; j<board[0].length; j ) {
System.out.print(board[i][j]);
}
}
System.out.println(" ─────────────");
CodePudding user response:
The simplest way is to fill your board
array with K
and then randomly replace 8 of them with L
as suggested by @dan1st. The following should work:
public class SimpsonsBoard {
public static void main(String[] args) {
String[][] board = new String[6][6];
for (String[] row : board) {
Arrays.fill(row, "K");
}
Random random = new Random();
for(int i = 1; i <= 8; i ) {
int x = random.nextInt(6);
int y = random.nextInt(6);
board[x][y]= "L";
}
System.out.println(" ─────────────");
System.out.println("│" board[0][0] "│" board[0][1] "│" board[0][2] "│" board[0][3] "│" board[0][4] "│" board[0][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[1][0] "│" board[1][1] "│" board[1][2] "│" board[1][3] "│" board[1][4] "│" board[1][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[2][0] "│" board[2][1] "│" board[2][2] "│" board[2][3] "│" board[2][4] "│" board[2][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[3][0] "│" board[3][1] "│" board[3][2] "│" board[3][3] "│" board[3][4] "│" board[3][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[4][0] "│" board[4][1] "│" board[4][2] "│" board[4][3] "│" board[4][4] "│" board[4][5] "│");
System.out.println(" ─────────────");
System.out.println("│" board[5][0] "│" board[5][1] "│" board[5][2] "│" board[5][3] "│" board[5][4] "│" board[5][5] "│");
System.out.println(" ─────────────");
}
}