Эта проблема произошла со мной, потому что у меня был hibernate.default_schema
установлен в другую базу данных, чем та, что в DataSource.
Будучи строгим в моих разрешениях пользователя mysql, когда hibernate пытался запросить таблицу, запросил ту, которая была в базе данных hibernate.default_schema
, для которой у пользователя не было разрешений.
. К сожалению, mysql неправильно указывает базу данных в этом сообщении об ошибке, так как это сразу прояснило бы ситуацию.
для версии 2 вы можете разделить вашу исходную строку и поместить ее в массив с помощью метода, который вы можете вызвать для строки String [] tmpsplit = tmp.split(" ");
. Таким образом, ваш массив имеет внутри каждой ячейки одно направление (ВВЕРХ или ВНИЗ, ВЛЕВО или ВПРАВО).
Затем вы можете поместить этот массив в аналогичный для того, который у вас есть для версии 1. Замените charFromPath == 'U'
на tmpsplit[i].equals("UP")
Вы можете попробовать что-то вроде
String str = "UPUPLEFTRIGHTUP";
int countUP = ( str.split("UP", -1).length ) - 1;
int countLEFT = ( str.split("LEFT", -1).length ) - 1;
int countRIGHT = ( str.split("RIGHT", -1).length ) - 1;
int countDOWN = ( str.split("DOWN", -1).length ) - 1;
Ограничение можно проверить, сравнив значения int
с пределами поля (10*10
в вашем случае).
Для позиции, если предположить, что каждое движение составляет 1 единицу, то:
int x = 0; //starting point in Ox axis
int y = 0; //starting point in Oy axis
x = countRIGHT - CountLeft;
y = countUP - CountDOWN;
Пара (x,y)
- это позиция вашего робота.
int[] walk(String path) {
int[] position = {0,0};
int countUP = ( path.split("UP", -1).length ) - 1; //Counts how many UP command
int countLEFT = ( path.split("LEFT", -1).length ) - 1; //Counts how many LEFT command
int countRIGHT = ( path.split("RIGHT", -1).length ) - 1; //Counts how many RIGHT command
int countDOWN = ( path.split("DOWN", -1).length ) - 1; //Counts how many DOWN command
position[0] = countRIGHT - countLEFT;
position[1] = countUP - countDown;
return position;
}