Я пытаюсь преобразовать этот 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;
}
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)
.
Надеюсь, это поможет ..
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;
}
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].