В настоящее время я работаю над небольшим проектом по курсу edX. Я придерживался одной вещи, принимая значения от пользователей и сохраняя их в 2d массиве. Тем не менее, значения должны быть в диапазоне, и поэтому мне нужно повторить то же самое, что необходимые условия выполнены.
Я сам нашел решение, но я не знаю, является ли это обычной практикой или есть лучший способ сделать это.
Позвольте мне объяснить;
Итак, у меня есть такой массив:
int[][] userCoordinates = new int[5][2];
Я хочу заполнить этот массив информацией о координатах пользователя , но координаты должны быть от 0 до 9.
Я сделал что-то вроде этого;
int coordinateValueX = 0, coordinateValueY = 0;
Scanner input = new Scanner(System.in);
for (int i = 0; i < userCoordinates.length; i++) {
// X - Value
for (int j = 0; j <= 0; j++) {
System.out.print("Enter X coordinate for your " + (i + 1) + ". ship:");
coordinateValueX = input.nextInt();
if (gridCheck(coordinateValueX)) {
j--;
}
}
// Y - Value
for (int j = 1; j <= 1; j++) {
System.out.print("Enter Y coordinate for your " + (i + 1) + ". ship:");
coordinateValueY = input.nextInt();
if (gridCheck(coordinateValueY)) {
j--;
}
}
}
И метод gridCheck таков:
public static boolean gridCheck(int coordinateValue) {
boolean flag = false;
if (coordinateValue > 9 || coordinateValue < 0) {
System.err.println("Invalid grid, please give your coordinate again.");
flag = true;
}
return flag;
}
Я пытался используя while-continue, но проблема в том, что когда пользователь задает неправильное значение Y, он снова запрашивает значение x, потому что переходит к следующему l oop.
Открыт для предложений, заранее спасибо.