1和0的二维数组

时间:2015-01-22 21:42:07

标签: java arrays

我需要创建一个10 s的随机迷宫,而且无需解决。我写的程序需要能够搜索这个迷宫并告诉我是否有可能从头到尾。 0可以通过1,但[[I@4ea20232就像墙一样。目前我只是想创建随机数组,以及我到目前为止编译的内容,但它返回:import java.util.Random; public class SearchMaze{ public static void main(String [] args){ int n = 8; int m = 7; int[][] maze = new int[n][m]; Random rand = new Random(); for(int i = 0; i < n; i++) for(int j = 0; j < m; j++) maze[i][j] = rand.nextInt(2); System.out.println(maze); } } 。到目前为止,我有这个:

1000000
1111100
0000001
1110111
1010101
1010101
0000110
1110000

我想尝试这样的事情:

{{1}}

我似乎无法找到为什么这样的事情无法发挥作用。

5 个答案:

答案 0 :(得分:2)

问题是数组的toString会返回无用的信息。使用列表无济于事,因为它会用逗号在一行上打印所有内容。尝试使用嵌套循环来输出数据。

for(int i = 0; i < n; i++) {
    for(int j = 0; j < m; j++) {
        System.out.print(maze[i][j]);
    }
    System.out.print('\n');
}

答案 1 :(得分:2)

当您打印System.out.println(a);之类的对象时,您实际上正在调用该对象的toString()方法。因此,您真正打电话给System.out.println(a.toString());

数组的toString()方法并不是特别有用,所以通过System.out.println(maze),你不会看到任何信息。

幸运的是,Arrays类具有帮助方法,可以将您的问题减少到单行。尝试使用:

System.out.println(Arrays.deepToString(maze));

鉴于您的maze是2d,您可以使用一些replaceAll调用来格式化它,就像您的帖子一样:

System.out.println(Arrays.deepToString(maze)
        .replaceAll("],\\s\\[", "\n")
        .replaceAll(",\\s|]|\\[", "")
    );

答案 2 :(得分:1)

相反,使用随机值填充迷宫,您需要启动所有1并填充随机路径,例如向北或向东走一段特定的长度。

就像您所拥有的循环一样,您也需要以这种方式打印它们。

for(int i = 0; i < n; i++) {
    for(int j = 0; j < m; j++) {
        System.out.print(maze[i][j]);
    }
    System.out.println();
}

答案 3 :(得分:0)

不是问题的答案,因为它已经得到了解答,但你怎么知道从哪里开始到哪里结束?

无论如何,我来到这里是为了引导你走向A *算法 - 它是一种路径寻找算法,对于这种类型的应用来说非常棒。

答案 4 :(得分:0)

我认为更好的解决方案是为迷宫创建一个对象:

public class Maze {

    public Maze(final int[][] maze) {
        this.maze = maze;
    }

    @Override
    public String toString() {
        final StringBuilder builder = new StringBuilder();
        for (int i = 0; i < maze.length; i++) {
            for (int j = 0; j < maze[i].length; j++) {
                builder.append(maze[i][j]);
            }
            builder.append("\r\n");
        }
        return builder.toString();
    }

    private final int[][] maze;
}
相关问题