У вас много заблуждений относительно Java. Позвольте мне продемонстрировать номера строк.
private MazeStatus[][] stringToMaze(String sMaze) {
String[] splitString = sMaze.split("\n"); // line 1
char[][] array = new char[1][]; // line 2
for (int x = 0; x < splitString.length; x++) { // line 3
array[1][x] = splitString[x].toCharArray(); // line 4
}
return null; // TO DO
}
Я предполагаю, что вы хотите взять ввод и преобразовать его в объект MazeStatus (который, по-видимому, отсутствует в вашем вопросе). В строке:
1 - вы получаете каждую строку лабиринта, которая представлена символами.
2 - вы объявляете двумерный массив символов, но инициализируете только одно из измерений. Если вы заметите, вы обнаружите, что другое измерение массива все еще неизвестно.
3 - Вы go по каждой из строк лабиринта.
4 - Вы конвертируете строка (splitString [x]) в массив символов. Вы берете 1-е измерение двумерного массива (хотя ваш код инициализировал это измерение, чтобы иметь длину 1). Если вы все еще не нашли проблему, вы должны знать, что массивы Java проиндексированы на основе 0. Подробнее об этом . Игнорируя эту ошибку, вы также пытаетесь сохранить целый массив символов во 2-м измерении, тогда как вы еще не инициализировали это измерение.
Итак, что вам нужно сделать:
Вам необходимо установить длину первого измерения равным количеству строк, которые будут у вас в лабиринте.
Для каждой строки (строки): инициализируйте 2-е измерение массива длиной этой строки, а затем установите массив символов [row] = splitString [x] .toCharArray ();
Ниже вы можете найти измененную версию :
private String stringToMaze(String sMaze) {
String[] splitString = sMaze.split("\n");
char[][] array = new char[splitString.length][];
for (int x = 0; x < splitString.length; x++) {
array[x] = new char [splitString[x].length()];
array[x] = splitString[x].toCharArray();
for (int i = 0; i< splitString[x].length(); i++) {=
System.out.print(array[x][i]);
}
System.out.println();
}
return null; // TO DO
}