Я пытаюсь преобразовать этот 2-мерный массив в строку. Проблема в том, что он выводит 100 000 символов даже через входной массив. Как правильно преобразовать массив 2d char в строку?

public String printMaze(char[][] maze) {
    String s= "";
    for(int i=0;i<maze.length;i++){
        for(int j=0; i<maze[i].length;j++){
            s= maze.toString();;
        }
    }
    return s;
}
0
J.Doe 24 Апр 2017 в 04:40

2 ответа

Лучший ответ

У вашего внутреннего цикла есть проблема, и я также не вижу, что вы на самом деле представляете строку из двумерного массива символов. Вот проблема с внутренним циклом:

for (int j=0; i < maze[i].length; j++) {
        //   ^^^^ this will always be true for certain values of i
        // it should be j < maze[i].length
    s= maze.toString();;
}

Другими словами, ваш внутренний цикл может вращаться вечно, в зависимости от границ лабиринта. Вместо этого попробуйте следующий код:

public String printMaze(char[][] maze) {
    String s = "";
    for (int i=0; i < maze.length; i++) {
        for (int j=0; j < maze[i].length; j++) {
            s += maze[i][j];
        }
        // uncomment next line if you want the maze to have rows
        // s += "\n";
    }
    return s.toString();
}

Но, как упомянул @ElliottFrisch, вы можете просто вернуть Arrays.deepToString(maze).

3
Tim Biegeleisen 24 Апр 2017 в 01:53

Надеюсь, это поможет ..

public String printMaze(char[][] maze) {
 String s= "";
 for(int i=0;i < maze.length;i++){
    for(int j=0; j < maze[i].length;j++){
        s = s + maze[i][j];
    }
 }
 return s;
}
0
Adeel 24 Апр 2017 в 02:08
43578522