如何在4x4二维数组中随机选中0元素替换为lesserMonster变量值
实现方案
你只需要调整变量赋值、增加随机坐标生成的逻辑即可,具体操作如下:
- 首先在Java文件顶部导入内置的随机数工具类:
import java.util.Random; - 把
setup方法里的lesserMonster赋值从2改为1 - 初始化随机数生成器,分别随机生成4x4数组对应的行、列下标(范围都是0~3)
- 将数组对应下标的元素替换为
lesserMonster的值即可
完整修改后的代码
导入依赖
import java.util.Random;
修改后的setup方法
public static void setup(int dungeon[][]){ int lesserMonster = 1; // 按需求修改赋值为1 int drangon = 1; // 初始化全0地牢数组 for(int i = 0; i < dungeon.length; i++){ for(int j = 0; j < dungeon[i].length; j++){ dungeon[i][j] = 0; } } // 随机生成坐标替换元素 Random random = new Random(); int randomRow = random.nextInt(dungeon.length); // 随机行号,范围0到数组长度-1 int randomCol = random.nextInt(dungeon[0].length); // 随机列号 dungeon[randomRow][randomCol] = lesserMonster; pDungeon(dungeon); }
优化后的pDungeon方法
原方法可以直接使用,这里做了小调整适配非方阵场景:
public static void pDungeon(int dungeon[][]){ for(int i = 0; i < dungeon.length; i++){ for(int j = 0; j < dungeon[i].length; j++){ System.out.print(dungeon[i][j] + " "); } System.out.println(); } }
补充说明
如果后续数组中会存在非0元素,需要保证只选中值为0的元素替换,可以用循环反复随机直到拿到符合要求的坐标,逻辑如下:
Random random = new Random(); int randomRow, randomCol; do { randomRow = random.nextInt(dungeon.length); randomCol = random.nextInt(dungeon[0].length); } while (dungeon[randomRow][randomCol] != 0); dungeon[randomRow][randomCol] = lesserMonster;
内容的提问来源于stack exchange,提问作者Alec
相关产品推荐
相关产品推荐

