![](/img/trans.png)
[英]Random generator for two dimensional array, Incriminating string letters for simple game
[英]putting random alphabetical letters in 2 dimensional array in java
我想创建一个二维数组,其中包含全部大写的字母。 该程序的目标基本上是建立一个单词搜索难题,我想用随机字母字母填充二维数组,但是用我目前拥有的代码,表格数组只用一个随机生成的字母字母完全填充。 有没有办法用随机字母随机填充数组?
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
}
}
}
此代码可以打印
Q Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q Q
要么
V V V V V V V V V V
V V V V V V V V V V
V V V V V V V V V V
V V V V V V V V V V
V V V V V V V V V V
V V V V V V V V V V
V V V V V V V V V V
V V V V V V V V V V
V V V V V V V V V V
V V V V V V V V V V
我希望它像
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
任何帮助,将不胜感激。
将您的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
只是移动这个
int number = (int) (Math.random() * 26) + 65;
到之前
table[r][c] = (char) number;
那么它将为每个循环获取一个新值
您只能生成一个具有临时值的字符(循环之外)。 另外,我更喜欢'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] + " ");
}
}
您只生成一次随机数,这里int number = (int) (Math.random() * 26) + 65;
之后,循环并在2D数组的每个位置插入相同的数字。 如果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
进入
public static void box(){
int rows = 10;
int columns = 10;
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;
table[r][c] = (char) number;
System.out.print(table[r][c] + " ");
}//inner for loop
System.out.println();
}//outer for loop
另外,您可以将两行放在一起并消除对number
局部变量的需要:
table[r][c] = (int) (Math.random() * 26) + 65;
我会改变的另一件事是使用'A'而不是65。在我看来,这变得更清楚... table[r][c] = (int) (Math.random() * 26) + 'A';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.