Я пытаюсь запросить ввод со сканера, пока не получу правильный ответ, но мое время l oop не заканчивается. Сначала я запрашиваю ввод данных пользователем, а затем, если ввод действителен, я печатаю координаты, а если он недействителен, я выдаю ошибку и снова запрашиваю ввод. Это мой код:
public static String[] positionQuery(int dim, Scanner test_in) {
String[] coordinates;
Scanner stdin = new Scanner(System.in);
System.out.println("Provide origin and destination coordinates.");
System.out.println("Enter two positions between A1-H8:");
String s1 = stdin.nextLine();
coordinates = s1.split(" ");
String origin = coordinates[0];
String dest = coordinates[1];
while (!validCoordinate(origin,dim) || !validCoordinate(dest,dim) || coordinates.length != 2) {
System.out.println("ERROR: Please enter valid coordinate pair separated by space.");
Scanner stdin2 = new Scanner(System.in);
System.out.println("Provide origin and destination coordinates.");
System.out.println("Enter two positions between A1-H8:");
String s2 = stdin.nextLine();
coordinates = s1.split(" ");
String origin2 = coordinates[0];
String dest2 = coordinates[1];
}
return coordinates;
}
Как это исправить? Я также попытался сделать, пока l oop, но l oop не завершается:
public static boolean validCoordinate(String coordinate, int dimension) {
String [] alphabet = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
int [] numbers = new int [dimension];
int one = 1;
for(int i = 0; i < dimension; i++){
numbers[i] = one + i;
}
String[] validC = new String [dimension]; //if the first char is a letter + a number that is determined my the dimension (string concat
for(int i = 0; i < dimension; i++) {
for(int j = 0; j < dimension; j++){
validC [i] = alphabet[j] + Integer.toString(numbers[j]);
}
}
for(int i = 0; i < dimension; i ++) {
if(validC[i].equals(coordinate)) {
return true;
}
else {
return false;
}
}
return true;
}
Это окончательный код, но он еще не заканчивается: /
public static String[] positionQuery(int dim, Scanner test_in) {
Scanner scanner = new Scanner(System.in);
System.out.println("Provide origin and destination coordinates.");
System.out.println("Enter two positions between A1-H8:");
while(true) {
String line = scanner.nextLine();
String[] coordinates = line.split(" ");
if(coordinates.length == 2) {
String origin = coordinates[0];
String dest = coordinates[1];
if(validCoordinate(origin, dim) && validCoordinate(dest,dim)) {
return coordinates;
}
}
System.out.println("ERROR: Please enter valid coordinate pair separated by space.");
}
}