Вы не слишком понятны, но я постараюсь понять это.
Я предполагаю, что вы назвали ваш сканер «клавиатура»
Прежде чем я попробуйте запустить этот код, первая проблема, которую я вижу в этом (Обратите внимание, что я схватил это из кода перед редактированием вопрос):
while (board[row][col] != ' ')
{
System.out.println("Already occupied space");
System.out.println("Choose again");
row = keyboard.nextInt();
col = keyboard.nextInt();
}
Раньше вы убедились, что пользователь вводит целые числа. Однако вы полностью отказались от этого.
Предполагая, что вы пытаетесь избежать ошибки, если пользователь вводит что-то другое, чем целое, это то, что я хотел бы сделать:
while(true){
boolean valid = true;
if(!keyboard.hasNextInt()){
valid = false;
keyboard.next();
}
else{
row = keyboard.nextInt();
}
if(!keyboard.hasNextInt()){
valid = false;
keyboard.next();
}
else{
col = keyboard.nextInt();
}
if (valid && (row > 2 || col > 2)){
System.out.println("Please enter a valid input");
continue;
}
else if(!valid){
System.out.println("Please enter a valid input");
continue;
}
else
break;
}
Есть несколько причин, этот код может показаться немного долго. Во-первых, мы пытаемся проверить, является ли вход целое число до, мы пытаемся сохранить его как int. Во-вторых, мы хотим сравнить вход после, мы храним его успешно, чтобы увидеть, если оно меньше 3. Если вход не является целым числом, логическое значение «valid» будет ложным. Способ работы компилятора, если он действителен в инструкции if, он будет игнорировать что-либо справа от & &, избегая ошибки.
Я признаю, что это использование некоторых команд, которые я еще не изучил раньше, поэтому это может быть не самый эффективный способ. Но вы получаете идею :)
P.S. Вероятно, вы должны выбросить вышеуказанный код в метод.