Мое первое предложение заключается в том, что вы пытаетесь использовать разные обозначения для индексации массива.В ваших примерах массивов вы указали, что пользователь будет вводить строку, а затем строку.Ряды, как правило, вверх и вниз.Я предлагаю использовать строку, столбец или i, j или n, m, которые являются более распространенными способами описания положения в 2d массивах.
Кроме того, использование массива строк для этого примера создает ненужные накладные расходы.Было бы достаточно двухмерного массива логических значений.
Чтобы ответить на ваш вопрос, это зависит от того, как вы хотите сохранить, какие места заняты.Если вы хотите, чтобы ваш класс сохранял свое текущее состояние
public class SomeSeatClass {
private String[][] currentState;
public SomeSeatClass(int rows, int cols) {
currentState = new String[rows][cols];
// sets the size of the 2d array and then initialize it so that no seats are
// taken.
for (int i = 0; i < rows; i++) {
for (int j = 0; j < rows; j++) {
currentState[i][j] = "0";
}
}
}
public void setSeat(int rows, int lines) {
currentState[rows][lines] = "x";
}
public String[][] getCurrentState() {
return this.currentState;
}
}
Однако, если вы просто хотите, чтобы функция обрабатывала новую позицию и возвращала обновленный массив, я бы порекомендовал сделать функцию статической, например,
public static String [][] seatInfo(String [][] a, int rows, int lines){
String[][] returnString = a.clone();
returnString[rows][lines] = "x";
return returnString;
}
затем в вашем основном коде
int numberOfRows =5;
int numberOfColumns = 3;
String[][] seating = new String[numberOfRows][numberOfColumns];
//initialize array to "0"s
for (int i = 0; i < numberOfRows; i++) {
for (int j = 0; j < numberOfColumns; j++) {
seating[i][j] = "0";
}
}
//get the row and col from user
int userRow = 1;
int userCol = 1;
//seating now holds the most current state
seating = SomeSeatClass.seatInfo(seating, userRow, userCol);
Я думаю, что проблема, с которой вы сталкиваетесь, заключается в том, что вы перебираете свой массив и сбрасываете все в «0» при каждом вызове функции.Вам просто нужно установить все в ноль в начале, а затем просто обновить, какое место занято.
Примечания: будьте осторожны, думая, что массивы начинаются с 1,1.Они начинаются с 0,0, и было бы проще использовать их таким образом, но скрыть эти детали от пользователя.будьте осторожны при использовании строк в качестве параметров метода, потому что они неизменны.Никакие изменения в строках не будут отражены за пределами функции.Однако вы использовали массив строк, который немного его меняет.будьте осторожны, думая, как хранить ваши данные.String [] [] на самом деле является трехмерным массивом.В вашей функции вы передаете String [], который не помогает нам понять, что делать с нашим String [] [] SittingArray