我有一个网格:int[][] the_grid = new int[4][4];
我希望随机填充元素?,+, - ,*,!,/,#,%,这样正好两个方格中有一个元素。什么是完成这项任务最简洁有效的方法?
答案 0 :(得分:1)
如果您的网格实际上包含String
s(而不是int
s),我会简单地说:
列出您可以拥有的令牌:
final List<String> tokens = Arrays.asList("?", "+", "-", "*", "!", "/", "#", "%", "?", "+", "-", "*", "!", "/", "#", "%");
shuffle 这些令牌:
Collections.shuffle(tokens);
然后在迭代你的网格时最终添加:
int i = 0, j = 0;
for (final String token : tokens) {
theGrid[i][j] = token;
if (++j == 4) {
j = 0;
++i;
}
}
完整示例:
final String[][] theGrid = new String[4][4];
final List<String> tokens = Arrays.asList("?", "+", "-", "*", "!", "/", "#", "%", "?", "+", "-", "*", "!", "/", "#", "%");
Collections.shuffle(tokens);
int i = 0, j = 0;
for (final String token : tokens) {
theGrid[i][j] = token;
if (++j == 4) {
j = 0;
++i;
}
}
用法:
for (final String[] row : theGrid) {
for (final String column : row) {
System.out.print(column);
}
System.out.println();
}
示例输出(每次更改):
?!!%
+*--
#/#%
*/?+