在0,0坐标下启动Random Walker java程序时出现问题
我正在尝试建立一个程序,它接受一个整数并模拟一个随机行走的运动,直到随机行走者从起点到曼哈顿距离r为止。关键要求之一是在0,0坐标处启动程序,但我无法在0,0坐标下启动Random Walker java程序时出现问题,java,Java,我正在尝试建立一个程序,它接受一个整数并模拟一个随机行走的运动,直到随机行走者从起点到曼哈顿距离r为止。关键要求之一是在0,0坐标处启动程序,但我无法 public class RandomWalker { public static void main(String args[]) { int r = Integer.parseInt(args[0]); int x = 0; int y = 0; int step
public class RandomWalker {
public static void main(String args[]) {
int r = Integer.parseInt(args[0]);
int x = 0;
int y = 0;
int step = 0;
double R;
while(Math.abs(x) < r && Math.abs(y) < r) {
step++;
R = Math.random();
if(R <= 0.25) x++;
else if (R <= 0.50) x--;
else if (R <= 0.75) y++;
else if (R <= 1.00) y--;
System.out.println("(" + x + ", " + y + ")" );
}
System.out.println("steps = " + step);
}
}
公共类{
公共静态void main(字符串参数[]){
int r=Integer.parseInt(args[0]);
int x=0;
int y=0;
int步长=0;
双R;
while(Math.abs(x) 如果(R我怀疑您只需要在步进之前打印坐标。请参见下文。我还尝试将walker值封装在类中,而不是封装在main方法中
public class RandomWalker {
private final Random random;
private int steps = 0;
private int x = 0;
private int y = 0;
public RandomWalker(Random random) {
this.random = random;
}
public String toString() {
return steps + ": (" + x + "," + y + ")";
}
public void step() {
steps++;
switch (random.nextInt(4)) {
case 0: x++; break;
case 1: x--; break;
case 2: y++; break;
case 3: y--; break;
}
}
public int distance() {
return Math.abs(x) + Math.abs(y);
}
public static void main(String args[]) {
int r = Integer.parseInt(args[0]);
RandomWalker walker = new RandomWalker(new Random());
while (walker.distance() < r) {
System.out.println(walker);
walker.step();
}
System.out.println("steps = " + walker.steps);
}
}
公共类{
私有最终随机;
私有整数步长=0;
私有整数x=0;
私有整数y=0;
公共随机步行器(随机){
这个。随机=随机;
}
公共字符串toString(){
返回步骤+”:(“+x+”,“+y+”);
}
公共无效步骤(){
steps++;
开关(随机。nextInt(4)){
案例0:x++;中断;
案例1:x--;断裂;
案例2:y++;中断;
案例3:y--;断裂;
}
}
公共整数距离(){
返回Math.abs(x)+Math.abs(y);
}
公共静态void main(字符串参数[]){
int r=Integer.parseInt(args[0]);
RandomWalker=new RandomWalker(new Random());
while(walker.distance()
你的代码似乎是从(0,0)开始的。为什么你认为不是呢?但是,我注意到你没有正确地实现曼哈顿距离。测试应该是Math.abs(x)+Math.abs(y)
。当我运行测试时,它从不从(0,0)开始。此外,课程的自动加载器建议坐标不在(0,0).我不明白。如果x和y被初始化为0,它们不应该总是从0开始吗?我怀疑这只是因为你在更改坐标后打印坐标。先打印,你会看到它是从0,0开始的。我会添加一个答案。你的意思是你应该打印步行从0,0开始吗?哦,我的话..那很尴尬。妈现在就开始-谢谢!