Estoy tratando de colocar al azar matriz de cadenas 1D matriz de caracteres en 2D pero estoy teniendo problemas con mi ciclo for. userWords es 1D array de cadenas mientras puzzleBoard es una matriz 2D de carbón.
He intentado
for(int i=0; i<userWords.length;i++) {
puzzleBoard[r++] = userWords[i].toCharArray();
}
pero no la coloca al azar como yo quiero que
Así que he intentado
for(int i=0; i<userWords.length;i++) {
int r = rand.nextInt(ROW) + 1;
int c = rand.nextInt(COLUMN) + 1;
puzzleBoard[r][c] = userWords[i].charAt(i);
}
pero se está imprimiendo sólo 3 caracteres en lugar de las 3 cadenas de carbón en la matriz de caracteres.
También he intentado
puzzleBoard[r][c] = userWords[i].toCharArray();
en lugar de
puzzleBoard[r][c] = userWords[i].charAt(i);
Pero él exhibición de error "no se puede convertir de char [] a char"
Gracias
Código completa
public static void main(String[] args) {
String[] userWords = new String[3];
Methods.userInput(userWords); //ask user for input
Methods.fillPuzzle(puzzleBoard); //fill the puzzle with random char
for(int i=0; i<userWords.length;i++) {
int r = rand.nextInt(ROW) + 1;
int c = rand.nextInt(COLUMN) + 1;
puzzleBoard[r][c] = userWords[i].charAt(i);
}
Methods.printPuzzle(puzzleBoard); //print out the puzzle
}//end main
public static void printPuzzle(char a[][]) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j] + " ");
}
System.out.print((i+1));
System.out.println();
}
}//end printPuzzle
public static void fillPuzzle(char a[][]) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = '*';
}
}
}//end fillPuzzle
public static void userInput(String a[]) {
Scanner input = new Scanner(System.in);
for(int i = 0; i < a.length;i++) {
System.out.println((i+1) + ". enter word:");
a[i] = input.next().toUpperCase();
}
}//end userInput
Puede probar esto:
for (int i = 0; i < userWords.length; i++) {
int r = rand.nextInt(puzzleBoard.length);
int c = rand.nextInt(puzzleBoard[r].length - userWords[i].length());
for (int j = 0; j < userWords[i].length(); j++) {
puzzleBoard[r][c + j] = userWords[i].charAt(j);
}
}
Y se debe añadir algo que detecta si ya existe una palabra en esta posición, de lo contrario sería sobrescribir si los números aleatorios apuntan a un lugar donde ya está escrita una palabra.