我正在为学校做练习,我需要编写一个程序来跟踪网格中数字的x,y位置。
这是我到目前为止所遇到的问题,我在运行程序时只得到0,0。
我不擅长编程,如果它非常糟糕,那就很抱歉。
package øving_1;
public class Location {
private int xAkse;
private int yAkse;
public Location(){
xAkse = 0;
yAkse = 0;
}
public void right(int i){
xAkse++;
}
private void left(int i){
xAkse--;
}
private void up(int i){
yAkse--;
}
private void down(int i){
yAkse++;
}
public int getPosition(){
return xAkse;
}
public int getPosition2(){
return yAkse;
}
public static void main(String[] args) {
Location location = new Location();
location.right(0);
location.left(0);
location.up(0);
location.down(0);
System.out.print("Posisjonen til x, y er: ");
System.out.print(location.getPosition() + ", " + location.getPosition2());
}
}
答案 0 :(得分:0)
未使用 i 参数,但其余代码是正确的。
这正是你所期望的:如果你向右移动一步,然后向前迈出一步,然后向上迈出一步,然后向下一步,你再次在你所在的地方开始。
它的几何形状,宝贝。
答案 1 :(得分:0)
你应该使用当前的主要方法获得0,0。
您从位置0,0
开始。然后你打电话给right()
,它会向右移动1个单位。你现在在1,0
。然后你打电话给left()
,让你离开1个单位。现在你回到0,0
。然后拨打up()
,然后转到0,1
位置。最后,您拨打down()
,这会让您回到0,0
位置。
尝试做类似的事情:
Location location = new Location();
location.right(0);
location.right(0);
location.right(0);
location.down(0);
System.out.print("Posisjonen til x, y er: ");
System.out.print(location.getPosition() + ", " + location.getPosition2());
你应该获得职位3,-1
。
答案 2 :(得分:0)
解释:您获得(0, 0)
因为:
Location location = new Location()
- > (0,0); location.right(0)
- > xAkse++
- > ( 1 ,0); location.left(0)
- > xAkse--
- > ( 0 ,0); location.up(0)
- > yAkse--
- > (0, -1 ); location.down(0)
- > yAkse++
- > (0, 0 ); 是的。
如果您想改进您的代码,您可以添加一个允许您创建特定位置的构造函数:
public Location(int xAkse, int yAkse){
this.xAkse = xAkse;
this.yAkse = yAkse;
}
如果您想要向上,向下,向左和向右移动一定数量,请使用当前未使用的i
参数,例如:
public void up(int i) {
yAkse -= i;
}
public void right(int i){
xAkse += i;
}
现在你可以做到:
Location location = new Location(10, 10);
location.right(3);
location.up(5);
位置将为(13, 5)
。
另一个可读性提示:更改getPosition()
和getPosition2()
中的getXAkse()
和getYAkse()
个名称。
答案 3 :(得分:0)
我建议使用包含Point的自定义类。
看起来像这样:
import java.awt.Point;
public class CustomPoint {
//VARIABLE
private Point point = null;
//CONSTRUCTOR
public CustomPoint(int x, int y) {
this.point = new Point(x, y);
}
//METHODS
public void goUp() {
this.point.y++;
}
public void goDown() {
this.point.y--;
}
public void goRight() {
this.point.x++;
}
public void goLeft() {
this.point.x--;
}
public void printCurrentLocation() {
System.out.println("Current Location: (" + point.x + "/" + point.y + ")");
}
//GETTER AND SETTER
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
}
我举了一个例子,说明如何跟踪你的观点:
public class RunMe {
public static void main(String[] args) {
CustomPoint cp = new CustomPoint(0, 0);
cp.printCurrentLocation();
cp.goDown();
cp.printCurrentLocation();
cp.goUp();
cp.printCurrentLocation();
cp.goLeft();
cp.printCurrentLocation();
cp.goRight();
cp.printCurrentLocation();
}
}
产生以下输出的内容:
Current Location: (0/0)
Current Location: (0/-1)
Current Location: (0/0)
Current Location: (-1/0)
Current Location: (0/0)
大优势
如果您需要计算2点之间的距离,则已有解决方案!
CustomPoint a = new CustomPoint(0, 0);
CustomPoint b = new CustomPoint(3, 2);
System.out.println(a.getPoint().distance(b.getPoint()));
在控制台上打印以下行:
3.605551275463989