gpt4 book ai didi

java - 在 Java 中查找网格上的位置和移动方向

转载 作者:行者123 更新时间:2023-12-01 11:42:38 25 4
gpt4 key购买 nike

我有一个测试人员类(class),我已经准备好了,我只是不确定如何使这个工作与我的蓝图一起工作。这就是我正在尝试做的事情:

“你存在于一个由大道和街道组成的无限网格上,其中位置表示为整数的耦合(大道,街道)。你可以使用负数。现在考虑一个酒鬼,他在十字路口随机选择四个方向之一,然后跌跌撞撞地到下一个十字路口做同样的事情等等。写一个类 Drunkard 来模拟这种给醉汉起点的方式。你的 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.");

}
}

最佳答案

因此,为了跟踪醉汉的起始交叉点,

您必须将实例变量保留为如下所示

private int startAvenue;
private int startStreet;

并修改构造函数以存储 startAvenue 和 StartStreet 值。

Drunkard(int avenue, int street) {
this.startAvenue = avenue;
this.startStreet = street;
}

现在醉汉实例始终有其起始位置。

现在我们可以专注于步骤方法,

void step(){
int nextMove = rand.nextInt(3);
if(nextMove == 0)
moveUp();
else if(nextMove == 1)
moveDown();
else if(nextMove == 2)
moveLeft();
else
moveRight();
}

在fastForward()中,只需在for循环内调用step()方法

 void fastForward(int steps)
{
for (int i=0; i < steps.length; i++}{
step();
}
}

在 howFar() 方法中,

int howFar(){
int distance = Math.abs(startAvenue-avenue) + Math.abs(startStreet-street);
}

关于java - 在 Java 中查找网格上的位置和移动方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29405453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com