Java 将一维字符串数组随机放入二维字符数组

Java 将一维字符串数组随机放入二维字符数组,java,arrays,random,Java,Arrays,Random,我试图将一维字符串数组随机放入二维字符数组,但我的for循环有问题。 userWords是字符串的一维数组,而puzzboard是字符的二维数组 我试过了 for(int i=0; i<userWords.length;i++) { puzzleBoard[r++] = userWords[i].toCharArray(); } 而不是 puzzleBoard[r][c] = userWords[i].charAt(i); 但它显示错误“无法从char

我试图将一维字符串数组随机放入二维字符数组,但我的for循环有问题。 userWords是字符串的一维数组,而puzzboard是字符的二维数组

我试过了

for(int i=0; i<userWords.length;i++) {
        puzzleBoard[r++] = userWords[i].toCharArray(); 
    }
而不是

    puzzleBoard[r][c] = userWords[i].charAt(i);
但它显示错误“无法从char[]转换为char”

多谢各位

完整代码

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
publicstaticvoidmain(字符串[]args){
String[]userWords=新字符串[3];
Methods.userInput(userWords);//请求用户输入
Methods.fillPuzzle(拼图板);//用随机字符填充拼图
对于(int i=0;i您可以尝试以下方法:

  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);
     }
  }
for(int i=0;i

你应该添加一些东西来检测这个位置是否已经有一个单词,否则如果随机数指向一个已经写入单词的位置,你就会覆盖它。

我认为你应该使用2作为循环,因为你想先选择字符串,然后选择字符串中的字符

    for(int i=0; i<userWords.length;i++) {
       int r = rand.nextInt(ROW) + 1;
       int c = rand.nextInt(COLUMN) + 1;
       for (int j = 0; j < userWords[i].length(); j++) {
          puzzleBoard[r][c + j] = userWords[i].charAt(j);
       }
    }

for(inti=0;你能给我完整的代码吗?很有效!我当时很辛苦,谢谢你。是的,我计划在那之后马上做
  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);
     }
  }
    for(int i=0; i<userWords.length;i++) {
       int r = rand.nextInt(ROW) + 1;
       int c = rand.nextInt(COLUMN) + 1;
       for (int j = 0; j < userWords[i].length(); j++) {
          puzzleBoard[r][c + j] = userWords[i].charAt(j);
       }
    }