java中在二维数组中放置随机字母

java中在二维数组中放置随机字母,java,arrays,random,Java,Arrays,Random,我假设创建一个二维数组,其中包含全部大写的字母。该程序的目标基本上是构建一个单词搜索拼图,我想用随机字母填充二维数组,但用我目前的代码,表数组只是用随机生成的一个字母完全填充。有没有办法用随机字母填充数组 import java.util.*; public class puzzle { public static void main { box(); //other methods public static void box()

我假设创建一个二维数组,其中包含全部大写的字母。该程序的目标基本上是构建一个单词搜索拼图,我想用随机字母填充二维数组,但用我目前的代码,表数组只是用随机生成的一个字母完全填充。有没有办法用随机字母填充数组

import java.util.*;
public class puzzle
{
    public static void main
    {
       box();
       //other methods

       public static void box()
       {
          int rows = 10;
          int columns = 10;  
          int number = (int) (Math.random() * 26) + 65;    
          char[][] table = new char [rows][columns];
          for (int r = 0; r < rows; r++)
          {
             for (int c = 0; c < columns; c++)
             {
                table[r][c] = (char) number; 
                System.out.print(table[r][c] + " ");
             } //inner for loop
             System.out.println();
          } //outer for loop
       }
    }
}

我希望它是这样的

A G E C H J E Q D Z
G H K E Q E N M E J
H I Z E K H E Q K H
B Y U M G A E K H M
N Q A Y R Y E C U E
Y D W H X S J R S W
I Y O B N M K G D E
A D J R E X C B N G
W R U I G D D G J F
X C V O E W Q A O P
如果有任何帮助,我们将不胜感激。

请移动这个

int number = (int) (Math.random() * 26) + 65; 
之前

table[r][c] = (char) number;   
然后它将为每个循环获得一个新值

只要移动这个

int number = (int) (Math.random() * 26) + 65; 
之前

table[r][c] = (char) number;   

然后它将为每个循环获得一个新值

将您的
编号带到循环内部

 char[][] table = new char [rows][columns];
 for (int r = 0; r < rows; r++){
    for (int c = 0; c < columns; c++){
       int number = (int) (Math.random() * 26) + 65;  //just move this line
       table[r][c] = (char) number; 
       System.out.print(table[r][c] + " ");
    }//inner for loop
    System.out.println();
 }//outer for loop
char[][]表=新字符[行][列];
对于(int r=0;r
将您的
号码带到循环内

 char[][] table = new char [rows][columns];
 for (int r = 0; r < rows; r++){
    for (int c = 0; c < columns; c++){
       int number = (int) (Math.random() * 26) + 65;  //just move this line
       table[r][c] = (char) number; 
       System.out.print(table[r][c] + " ");
    }//inner for loop
    System.out.println();
 }//outer for loop
char[][]表=新字符[行][列];
对于(int r=0;r
您只生成一个带有临时值的字符(在循环外部)。另外,我更喜欢
'A'
而不是常数
65
。像

 for (int r = 0; r < rows; r++){
    for (int c = 0; c < columns; c++){
       table[r][c] = (char) ('A' + (Math.random() * 26));
       System.out.print(table[r][c] + " ");
    }
 }
for(int r=0;r
您只生成一个带有临时值的字符(在循环外部)。另外,我更喜欢
'A'
而不是常数
65
。像

 for (int r = 0; r < rows; r++){
    for (int c = 0; c < columns; c++){
       table[r][c] = (char) ('A' + (Math.random() * 26));
       System.out.print(table[r][c] + " ");
    }
 }
for(int r=0;r
您只生成一个随机数,这里
int number=(int)(Math.random()*26)+65

然后,循环并将相同的编号插入到二维阵列上的每个位置。如果
int number=(int)(Math.random()*26)+65在循环中,每次迭代都会得到一个随机数,这样,就(理论上)得到了不同的数

所以,只要改变

  public static void box(){
 int rows = 10;
 int columns = 10;  
 int number = (int) (Math.random() * 26) + 65;   // move this into loop 
 char[][] table = new char [rows][columns];
 for (int r = 0; r < rows; r++){
    for (int c = 0; c < columns; c++){
       table[r][c] = (char) number; 
       System.out.print(table[r][c] + " ");
    }//inner for loop
    System.out.println();
 }//outer for loop

另一件我会改变的事情是使用“A”而不是65。在我看来这更清楚了<代码>表[r][c]=(int)(Math.random()*26)+'A'

您只生成一次随机数,这里
int number=(int)(Math.random()*26)+65

然后,循环并将相同的编号插入到二维阵列上的每个位置。如果
int number=(int)(Math.random()*26)+65在循环中,每次迭代都会得到一个随机数,这样,就(理论上)得到了不同的数

所以,只要改变

  public static void box(){
 int rows = 10;
 int columns = 10;  
 int number = (int) (Math.random() * 26) + 65;   // move this into loop 
 char[][] table = new char [rows][columns];
 for (int r = 0; r < rows; r++){
    for (int c = 0; c < columns; c++){
       table[r][c] = (char) number; 
       System.out.print(table[r][c] + " ");
    }//inner for loop
    System.out.println();
 }//outer for loop

另一件我会改变的事情是使用“A”而不是65。在我看来这更清楚了<代码>表[r][c]=(int)(Math.random()*26)+'A'

这个答案有问题吗?为什么会被否决?这个答案有问题吗?为什么会被否决?