У меня есть класс тестера. Я все настроен, я просто не уверен, как сделать эту работу с моим планом. Вот что я пытаюсь сделать:Поиск местоположения и направления движения по сетке в Java
«Вы находитесь на бесконечной сетке авеню и улиц, где позиции представлены в виде сочетания целых чисел (проспект, улица). Вы можете использовать негативы. Теперь рассмотрите пьяницу, которая случайно выбирает одно из четырех направлений на пересечении, а затем натыкается на следующее пересечение, делая то же самое и т. д. Напишите класс Drunkard, чтобы имитировать этот способ получения начальной точки пьяницы. Ваш класс пьяницы должен иметь в качестве переменных экземпляра текущий проспект пьяницы (местоположение x) и текущая улица (местоположение y). У вашего класса должен быть метод с именем step()
, который перемещает пьяницу к следующему случайно выбранному соседнему перекрестку. У вашего класса должен быть другой метод, называемый fastForward(int steps)
, который принимает целое число в качестве входного сигнала (вызовите его шаги) и перемещает пересечения пьяных ступеней с его Текущее местоположение. Ваш класс должен иметь метод getLocation()
, который возвращает строку, указывающую текущее местоположение пьяницы. Наконец ваш класс должен иметь метод, называемый howFar()
, который сообщает расстояние пьяниц в блоках от того, где он начал рассчитываются Манхэттенский расстояние метрики.»
Что вы рекомендуете? Любая помощь будет делать, спасибо.
Вот что у меня есть мой план до сих пор.
java.util.Random;
class Drunkard
{
private int avenue;
private int street;
Drunkard(int avenue, int street) {
this.avenue = avenue;
this.street = street;
}
Random rand = new Random();
void moveUp(){
this.street -= 1;
}
void moveDown(){
this.street += 1;
}
void moveRight(){
this.avenue += 1;
}
void moveLeft(){
this.avenue -= 1;
}
void getLocation(){
int avenue = parseInt("avenue");
int street = parseInt("street");
System.out.println("Location: " + avenue + ", " + street);
}
void fastForward(int steps)
{
for (int i=0; i < steps.length; i++}{
}
}
void step(){
}
void howFar(){
int distance = Math.abs(x1-x0) + Math.abs(y1-y0);
}
}
И мне нужно это соответствовать с этим тестером класса.
import java.util.Scanner;
public class DrunkardTester {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter the starting avenue integer: ");
int avenue = input.nextInt();
System.out.println("Please enter the starting street integer: ");
int street = input.nextInt();
// instantiate
Drunkard jeff = new Drunkard(avenue,street);
//move 100 intersections
jeff.fastForward(100);
//find current location
String location = jeff.getLocation();
// get distance from start
int distance = jeff.howFar();
System.out.println("Current location: " + location);
System.out.println("This is " + distance + " blocks from your origin.");
}
}
Было бы лучше, если бы вы могли объяснить, что вам нужно более подробно или точно? –
Вам нужна помощь по внедрению методов Step, fast forward и howFar()? –
@sathiyaseelan Мне нужно, чтобы мой первый класс соответствовал всему классу Tester под ним. У моего первого класса есть ошибки. Мой пользователь должен воспроизводить пьяный, поэтому они будут двигаться только в случайных направлениях. Мне нужно двигаться вверх, вниз, влево или вправо. Они должны быть записаны. Запись предназначена для каждого пересечения, на котором я нахожусь. Таким образом, каждый выбор приведет к новой комбинации улиц + авеню. Должен быть вариант, чтобы я мог перемещать определенное количество пересечений по запросу, кроме стандартного. Количество ходов должно быть рассчитано и записано для каждого экземпляра. Спасибо! – Lorber