Tôi đang học Java và làm việc trên dự án guessingGame dựa trên lưới và tôi đang gặp một số khó khăn cho phương thức loadtargetGrid() của mình.Cách đặt một chuỗi ở một vị trí được chọn ngẫu nhiên trong một mảng 2D
Tôi có một mảng 2D có tên là Lưới và tôi muốn đặt sáu ký hiệu "X" vào sáu vị trí lưới được chọn ngẫu nhiên. Tôi không muốn làm gì với các vị trí khác và để chúng với null theo mặc định.
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;
}
}
Đó là những gì tôi có cho đến nay. Tôi đã cố gắng sử dụng một vòng lặp while với bộ đếm để đặt dấu "X" ở 6 vị trí ngẫu nhiên. Nó biên dịch nhưng tôi không chắc chắn nếu điều này hoạt động và tôi không biết làm thế nào để kiểm tra xem mã của tôi là chính xác.
Bạn không muốn trừ 1 khỏi ROWS và COLUMNS. Phương thức nextInt đã giới hạn kết quả từ 0 đến ROWS-1 hoặc 0 thành COLUMNS-1. Một trong những câu trả lời bạn đã nhận được sẽ cho phép bạn tránh các vị trí trùng lặp. –
đúng vậy! Tôi nghĩ phương thức nextInt (int n) sẽ chuyển từ 0 thành giá trị n, nhưng giá trị n là độc quyền.thanks – Poupen