Как проверить правильность введенных данных в ячейку во время игры в крестики нолики?
Как проверить правильность введенных данных в ячейку во время игры в крестики нолики? Нужно считать правильным вводом, если на одной строке ввели два числа (столбец и строку) от 1 до 3. Пробелов может быть сколько угодно.
Нужно написать функцию, которая принимает строку и возвращает клетку Cell в случае, если строка содержит только пробелы и два числа от 1 до 3. Иначе функция должна вернуть null. Классы Имя класса: Cell, поля: int row, int col.
Сигнатура функции Название функции: parseMove.
Параметры: String line.
Возвращаемый тип: Cell.
Ниже код моего решения, но он выводит только числовой массив. Дальше как я понимаю мне нужно циклом пройтись по этому массиву и проверить их. Я это вроде бы делаю, но программа все ровно выводит тот массив, хотя если я ввожу в main не числовые значения, то получаю ошибку. Мой вопрос: как решить задачу, чтобы правильно проверять введенные данные.
public class TicTacToe_105 {
public static class Cell{
public int row;
public int col;
public Cell(){
}
public Cell(int row, int col){
this.row = row;
this.col = col;
}
}
public static Cell parseMove(String line) {
Cell num = new Cell();
String str [] = line.split(" ", 1);
int array [] = new int[str.length];
for (int i = 0; i < array.length; i++){
array[i] = Integer.parseInt(str[i]);
if (array[i] >= 1 && array[i] <= 3){
num.equals(array);
}else{
num = null;
}
}
return num;
}
public static void main(String[] args) {
String line = "13454";
parseMove(line);
System.out.println(line);
}
}
Ответы (1 шт):
public static Cell parseMove(String line) {
Cell num = new Cell();
// удаляем пробелы в начале и конце строки и множественные пробелы
line = line.replaceAll("[\\s]{2,}", " ").trim();
// проверяем наличие посторонних символов
String str = line.replaceAll("[^ 1-3]", "");
// в итоге должны остаться две цифры и один пробел мужду ними
if (str.length() != 3 || !str.equals(line))
return null;
str = str.replaceAll(" ", "");
int tmp = Integer.parseInt(str);
num.row = tmp / 10;
num.col = tmp % 10;
return num;
}