sto imparando Java e lavorare su un progetto di guessingGame basata su una griglia e sto avendo qualche difficoltà per il mio metodo loadtargetGrid().Come posizionare una stringa in un luoghi scelti a caso in una matrice 2D
Ho un array 2D di String denominato Grid e quello che voglio inserire sei simboli "X" in sei posizioni di griglia scelte a caso. Non voglio fare nulla con la posizione degli altri e lasciarli con null di default.
public class Grid
{
public static final int ROWS = 5; // number of rows
public static final int COLUMNS = 5; // number of columns
public static final int NUMBER_OF_TARGETS = 6; // number of targets in the grid
private String[][] grid; // the grid itself, a 2-D array of String
private Random random; // random number generator
//Constructor
public Grid()
{
grid = new String[ROWS][COLUMNS];
random = new Random();
}
//method
public void loadTargetGrid()
{
int counter = 0;
while(counter < NUMBER_OF_TARGETS){
int randRow = random.nextInt(ROWS - 1);
int randColumn = random.nextInt(COLUMNS - 1);
grid[randRow][randColumn] = "X";
++ counter;
}
}
Questo è quello che ho finora. Ho provato ad usare un ciclo while con un contatore per posizionare una "X" in 6 posizioni casuali. Compila ma non sono sicuro che funzioni e non so come verificare se il mio codice è corretto.
Non si desidera sottrarre 1 da ROWS e COLUMNS. Il metodo nextInt limita già il risultato a 0 a ROWS-1 o 0 a COLUMNS-1. Entrambe le risposte che hai ricevuto ti consentiranno di evitare le posizioni duplicate. –
giusto! Ho pensato che il metodo di nextInt (int n) sarebbe passare da 0 al valore di n, ma il valore n è exclusive.thanks – Poupen