Colocar al azar 1D matriz de cadenas en la matriz de caracteres 2D

Truong Nguyen:

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
Chris623:

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.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=204071&siteId=1
Recomendado
Clasificación