Tag: multidimensional array

Java:搜索二维数组中的单词

我已经学习了大约4个月的Java,这是我学习的第一门编程语言。 对于学校,我们必须做一个项目,一个基于控制台的游戏。 我选择了Boggle。 我有一个带有骰子的ArrayList,每个都有一个随机的“向上”,然后ArrayList被洗牌,一个二维数组充满了每一面的值。 此时arrays充满了字符串,字符可能是更好的选择,但是很容易改变。 我面临的问题是我需要能够在数组中找到单词。 Boggle中的单词可以向任何方向移动,每个单独的块只能使用一次,但路径可以交叉,也可以对角搜索。 我设法找到数组中是否存在第一个字母。 如果不是,则可以中止搜索,如果存在则需要开始搜索,搜索单词的第二个字符,该字符必须在第一个字符的块周围。 我做了一些数学运算,发现它总是以“i-1和j-1”为例,作为周围区块的左上角。 我解决了这个问题,但似乎无法找到单词…而且,如果周围有2个“e”,我不知道如何搜索每个“e”的单词。 这是我到目前为止的代码: 这是我目前最重要的课程,Gameboard类 public class Gameboard { private List dices = new ArrayList(); private final int boardSize; private String[][] board; private boolean [][] blocksAvailable; private Random random = new Random(); public GameBoard() { // Making the board with a given size (will be changeable later […]

Java – 2Darrays检查对角线编号板

目前我正在开发一个在8×8 2Darrays板中生成随机0和1的程序。 我要做的是检查对角线上的所有数字是否相同(从角落开始,而不仅仅是任何对角线) 例: int[][] array = { {0, 0, 0, 0, 0, 0, 0, 1}, {0, 0, 1, 0, 1, 0, 1, 0}, {0, 0, 0, 0, 1, 1, 1, 0}, {0, 0, 0, 0, 1, 1, 1, 0}, {0, 0, 1, 1, 0, 1, 1, 0}, {0, 0, 1, 0, 0, 0, 1, […]

在function上穿越图像的惯用方法

我正在使用Java 8并尝试编写纯函数代码。 在我的最新项目中,我需要逐步浏览图像中的每个像素,并对每个像素执行一些计算。 我提出的代码是这样的: IntStream .range(0, newImage.getWidth()) .forEach(i -> IntStream .range(0, newImage.getHeight()) .forEach(n -> { inspectPixel(i, n, newImage); }) ); 但是,命令式版本是这样的: for (int i = 0; i < newImage.getWidth(); i++){ for (int n = 0; n < newImage.getHeight(); n++){ inspectPixel(i, n, newImage); } } 也许这只是因为我太习惯于命令式编程,但后者似乎比前者更具可读性。 正在发生的事情之一是: 我的代码是错误的,我是以错误的方式进行的吗? 如果是这样,代码应该是什么样的? 您如何在function上遍历任何二维数据结构,而不仅仅是图像? 这实际上是Java 8function方案中程序的最佳版本,这种情况对于函数式编程来说简直很糟糕。

深度优先搜索二维arrays

我正在尝试通过创建一个通过迷宫(2d数组)导航我的食人魔的程序来学习DFS。这类似于每日编程挑战,但我只用1×1食人魔做这件事。 我的迷宫: static int[][] maze = { {2,1,0,0,0,0,0,0,0,0}, {0,0,1,0,0,0,0,0,0,0}, {1,0,0,0,0,1,0,1,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,1,1,0,0,0,0,0,0}, {0,0,1,0,0,0,0,1,0,1}, {1,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,0,0,0}, {0,0,0,0,0,1,0,0,0,3}}; 其中2是我的英雄(0,0),3是我的目标(9,9),1是障碍物,0是可穿越空间。 由于我是新手,我怀疑它是否需要,但生病包括整个程序,以便于复制和故障排除。 import java.awt.Point; import java.util.ArrayList; public class OgrePath { static int[][] maze = { {2,1,0,0,0,0,0,0,0,0}, {0,0,1,0,0,0,0,0,0,0}, {1,0,0,0,0,1,0,1,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,1,1,0,0,0,0,0,0}, {0,0,1,0,0,0,0,1,0,1}, {1,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,0,0,0}, {0,0,0,0,0,1,0,0,0,3}}; public static boolean[][] visited = new boolean[maze.length][maze[0].length]; static ArrayList neighbors = new ArrayList(); […]

Java中连续’if’语句的简化

我有一系列if语句,如下所示: if (board[x+1][y]==true) { ar+=1; } if (board[x][y+1]==true) { ar+=1; } if (board[x-1][y]==true) { ar+=1; } if (board[x][y-1]==true) { ar+=1; } if (board[x+1][y+1]==true) { ar+=1; } if (board[x+1][y-1]==true) { ar+=1; } if (board[x-1][y+1]==true) { ar+=1; } if (board[x-1][y-1]==true) { ar+=1; } 有没有办法用Java简化/压缩这些语句?

在2Darrays中找到峰值的算法

假设我在java int[][] array有一个2D累加器int[][] array 。 该数组可能如下所示: (x和z轴表示数组中的索引,y轴表示值 – 这些是int[56][56] ,值为0~4500) 要么 我需要做的是在arrays中找到峰值 – 第一个峰值有2个峰值,第二个arrays有8个峰值。 这些峰值总是“明显的”(峰值之间始终存在间隙),但它们不必像这些图像那样相似,它们可能或多或少是随机的 – 这些图像不是基于真实数据,只是样本。 真正的arrays可以有5000×5000的大小,峰值从几千到几十……算法必须是通用的,我不知道arrays或峰值有多大,我也不知道那里有多少个峰值是。 但我确实知道某种阈值 – 峰值不能小于给定值。 问题是,一个峰可以由附近的几个较小的峰组成(第一个图像),高度可以是非常随机的,并且在一个arrays中大小可以显着不同(大小 – 我的意思是它在arrays中占用的单位数 – 一个峰值可以包含6个单位,其他峰值可以包含90个单位。 它也必须快速(全部在1次迭代中完成),arrays可能非常大。 任何帮助表示赞赏 – 我不希望你的代码,只是正确的想法:)谢谢! 编辑:你询问了域名 – 但它很复杂,而且它无法解决问题。 它实际上是一个带有3D点的ArrayLists数组,如ArrayList [] [],并且有问题的值是ArrayList的大小。 每个峰包含属于一个簇的点(在这种情况下为平面) – 该数组是算法的结果,它对点云进行分段。 我需要在峰值中找到最高值,这样我就可以将“最大”的arraylist中的点拟合到一个平面,从中计算一些参数,然后正确地聚集来自峰值的大部分点。

如何遍历一个2d char数组搜索java中的单词?

我在完成学校任务时遇到了麻烦,并且非常欣赏一些见解。 我被要求使用25×25 2d char数组创建一个wordsearch,并以某种方式通过开发一种算法来遍历该数组,该算法将搜索它以查找21个预定义的单词。 到目前为止,我已经能够创建一个我需要找到的字体的粗糙数组,以及在每个位置放置字符的二维数组。 in = new ASCIIDataFile(“wordsearch.txt”); display = new ASCIIDisplayer(); int numberWords = in.readInt(); wordlist = new char[numberWords][]; for (int i =0; i<wordlist.length; i++){ wordlist[i] = in.readLine().toUpperCase().toCharArray(); } for(int i = 0;i<wordlist.length; i++){ display.writeLine(" "); for(int j = 0;j<wordlist[i].length; j++){ display.writeChar(wordlist[i][j]); } } //done wordlists int gridLength = in.readInt(); int gridHeight = […]

简单的Java 2darrays迷宫样本

我正在工作或了解如何创建一个简单的java 2d迷宫 ,它应该如下所示: int [][] maze = { {1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,0,1,0,1,0,1,0,0,0,0,0,1}, {1,0,1,0,0,0,1,0,1,1,1,0,1}, {1,0,0,0,1,1,1,0,0,0,0,0,1}, {1,0,1,0,0,0,0,0,1,1,1,0,1}, {1,0,1,0,1,1,1,0,1,0,0,0,1}, {1,0,1,0,1,0,0,0,1,1,1,0,1}, {1,0,1,0,1,1,1,0,1,0,1,0,1}, {1,0,0,0,0,0,0,0,0,0,1,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1} }; 这个已创建的想法是设置一个起点和目标点并通过使用递归深度首先找到路径。 但必须说我很难创造迷宫。 你有什么建议怎么做吗? 或者也许是教程的链接? 我现在主要关注的是创造迷宫。

生命游戏ArrayIndexOutofBounds

我在做康威的生活游戏。 我很确定我已接近完成,但是当我运行它时,我Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: -1 at game.of.life.GameOfLife.generation(GameOfLife.java:77) at game.of.life.GameOfLife.main(GameOfLife.java:32) Java Result: 1获得了Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: -1 at game.of.life.GameOfLife.generation(GameOfLife.java:77) at game.of.life.GameOfLife.main(GameOfLife.java:32) Java Result: 1 我假设当检查数组边缘的邻居的方法时,没有任何东西,所以它死了或什么的。 我只是不知道如何做到这一点,所以不会发生。 有人有想法吗? 代码如下。 package game.of.life; import java.util.Scanner; public class GameOfLife { static boolean[][] current = new boolean[10][10]; static boolean[][] old = new boolean[10][10]; static int population = 10; […]

将CSV文件转换为Java – 向后复制

我之前曾问过一个关于在CSV中将CSV文件转换为2D数组的问题。 我完全重写了我的代码,它几乎是在重做。 我现在唯一的问题是它向后打印。 换句话说,列是打印行应该是,反之亦然。 这是我的代码: int [][] board = new int [25][25]; String line = null; BufferedReader stream = null; ArrayList csvData = new ArrayList (); stream = new BufferedReader(new FileReader(fileName)); while ((line = stream.readLine()) != null) { String[] splitted = line.split(“,”); ArrayList dataLine = new ArrayList(splitted.length); for (String data : splitted) dataLine.add(data); csvData.addAll(dataLine); } […]