java – 将数字放在2D数组中的随机点上
发布时间:2020-12-15 04:32:03 所属栏目:Java 来源:网络整理
导读:我有一个有5行5列的2D数组.我想要它,以便在2D数组中的8个随机点(使其选择一个随机的行和列)放置一个’1’的字符. 我做的是调用Random类并生成0到4之间的数字(对于数组的5个点)然后我有两个for循环运行8次(对于我想要的8个随机点),一个经过行,另一个通过列.
我有一个有5行5列的2D数组.我想要它,以便在2D数组中的8个随机点(使其选择一个随机的行和列)放置一个’1’的字符.
我做的是调用Random类并生成0到4之间的数字(对于数组的5个点)然后我有两个for循环运行8次(对于我想要的8个随机点),一个经过行,另一个通过列. 这是我到目前为止的代码: char[][] battleship = new char[5][5]; //I didn't include this but I have a for loop that populates all the rows and columns with a char of '0' Random random = new Random(); int randomNum = random.nextInt(4); for (int i = 0; i < 8; i++) { for (int o = 0; o < 8; o++) { battleship[randomNum][randomNum] = '1'; } } 我得到的问题是,它不是将’1’放在8个随机位置,而是连续放入5个位置. 我该如何纠正? 以下是输出示例: 0 ‘1’不在8个随机点中. 我哪里做错了? 解决方法
嵌套循环每次运行8次将迭代64次.您不需要嵌套循环来执行此操作.其中一个简单的方法是使用while循环并分配8个随机点,直到拍摄所有8个点:
int occupiedSpots = 0; while(occupieedSpots < 8){ int x = random.nextInt(rows); int y = random.nextInt(cols); if(battleship[x][y] == 0){ battleShip[x][y] = 1; occupiedSpots ++; } } 还要确保在每次迭代中生成新的随机数,否则您将始终使用相同的随机值. 使用while循环还可确保所有8个点位于不同位置.如果您只是在没有检查的情况下使用for循环实现它,那么有一些趋势可能会在同一位置上落下两次. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 使用DropWizard处理长请求
- 我想在Java中使用String.replaceAll(regex,regex
- java实现利用String类的简单方法读取xml文件中某
- java – 用于调试VerifyError的好工具
- java – Android;在类体中声明edittext(在任何方
- java – HttpClient发布进度和MultipartEntityBu
- java – 可能ThreadLocal可能有用吗?
- java – 使用RuntimeMXBean实例和System.getProp
- java – 在UNix盒子上运行速度慢但在Windows上运
- java – 在Android和iOS中使用最好的服务器客户端
热点阅读