Я делаю игру четыре в ряд, где количество строк и colomns определяется игроком (так может быть что угодно, если больше четырех). Таким образом, пользовательский ввод хранится в переменных «rows» и «column». Поле выглядит так, как это, поэтому первая строка всегда является числом.Ошибка вне границ с 2D-массивом Java
У меня проблема с алгоритмом поиска победителя. Хотя мой алгоритм горизонтального поиска работает отлично, вертикальный с той же логикой дает мне ошибку. Если бы вы могли помочь мне обнаружить ошибку, я был бы очень благодарен. Спасибо! | - | - | - | - | | - | - | - | - | - | | - | - | - | - | - |
public static String checkWinner(String [][]field){
//horizontally, which works
for(int i=1; i<=rows; i++){
for (int j=0; j<=column-1;j++){
if (((j>=3 || j==column-1) && field[i][j]!="|_" && field[i][j]==field[i][j-1] && field[i][j]==field[i][j-2] && field[i][j]==field[i][j-3])
|| (field[i][j]!="|_" && field[i][j]==field[i][j+1] && field[i][j]==field[i][j+2] && field[i][j]==field[i][j+3]))
{
return field[i][j];
}
}
}
//vertically which doesn't work
for(int i=0; i<column; i++){
for (int j=1; j<=rows-1;j++){
if (((j>=4 || j==rows-1) && field[j][i]!="|_" && field[j][i]==field[j-1][i] && field[j][i]==field[j-2][i] && field[j][i]==field[j-3][i])
|| (field[j][i]!="|_" && field[j][i]==field[j+1][i] && field[j][i]==field[j+2][i] && field[j][i]==field[j+3][i]))
{
return field[i][j];
}
}
}
return null;
}
Пожалуйста, форматировать Ваш код правильно, это довольно болезненно, чтобы попытаться прочитать в текущем состоянии – Sinkingpoint
Примечание: 'поле [i] [j]! =" | _ "'. Это не так, как вы сравниваете строки. Используйте 'equals()'. –
Каковы значения 'rows' и' column' – exexzian