Java新手在这里。我有多个while循环。所有人都认为它会按顺序排列,直到while条件等于true。我的输出表明它是第一个while循环它发现是真的然后退出,而不看其他。请告知是否有更好的方法,或者您是否看到明显的错误。来自(xCar = 3,yCar = 3)和Destination =(1,1)的样本输出仅为“West”“West”。应该有2个“南”。 *请原谅打印声明,我试图调试它正在做的事情。我还应该指出,我只能将'汽车'移动一个点然后需要报告方向。
if (car.getLocation().equals(car.getDestination())){
System.out.println("inside this if statement");
System.out.println(car.nextMove().NOWHERE);
}
//Seeing if Xcar is greater than Xdest. If so moving west
while (car.getxCar() > xDestination){
System.out.println("2nd if statement");
System.out.println(car.nextMove().WEST);
}
//Seeing if Xcar is less than Xdest. If so moving east
while (car.getxCar() < xDestination){
//System.out.println("3rd");
System.out.println(car.nextMove().EAST);
}
//Seeing if Ycar is greater than Ydest. If so moving south
while (car.getyCar() > yDestination){
System.out.println("4th");
System.out.println(car.nextMove().SOUTH);
}
//Seeing if Ycar is less than Ydest. If so moving north
while (car.getyCar() < yDestination){
System.out.println("5th");
System.out.println(car.nextMove().NORTH);
}
方法nextMove()它在类Direction
中调用枚举public Direction nextMove() {
if (xCar < xDestination){
xCar = xCar + car.x+ 1;
}
if (xCar > xDestination){
xCar = xCar + car.x -1;
}
if (yCar < yDestination){
yCar = yCar + car.y +1;
}
if (yCar > yDestination){
yCar = yCar + car.y -1;
}
return null;
输出
Car [id = car17, location = [x=3, y=3], destination = [x=1, y=1]]
2nd if statement
WEST
2nd if statement
WEST
答案 0 :(得分:1)
这是怎么回事:
在您的第一个while循环中,您可以调用nextMove()
方法。这个方法在第一个循环中递增x和y,这就是为什么你没有得到其他while循环的输出。如果您将输入目的地更改为[3,4],则应输出WEST,WEST,SOUTH
您可以解决此问题,以便nextMove()
方法中只有一个维度一次递增,方法是将其更改为else if
,如此
public Direction nextMove() {
if (xCar < xDestination){
xCar = xCar + car.x+ 1;
}
else if (xCar > xDestination){
xCar = xCar + car.x -1;
}
else if (yCar < yDestination){
yCar = yCar + car.y +1;
}
else if (yCar > yDestination){
yCar = yCar + car.y -1;
}
return null;
答案 1 :(得分:1)
我不会在这里上新课。您只需要一个方法来执行移动,该方法可以在与main函数相同的文件中创建。如果你真的想要一个班级来移动汽车那么你需要正确地声明它。请记住,类需要公共,私有和构造函数以及类可以执行的所有方法。将移动方法放在汽车类中也很容易,因为汽车类的一部分应该保持汽车对象的位置。我不知道你是想让它在屏幕上移动还是只是改变位置。如果你想在屏幕上移动,while循环将起作用。但是,如果您只需要更改位置,那么更改保存汽车位置的私有变量会更容易;由于评估布尔值需要相当长的计算时间,因此编码和运行会更容易。祝好运。如果你什么都不懂,请告诉我。