2014-02-15 33 views
0

这是我们班上使用的第三章,所以他们没有介绍太多。我已经在这里待了大约2个小时,并且很不幸很不幸。这就是问题所在:编码练习,无法使其工作?

写一个模拟沿着水平线移动的错误的类“Bug”。该错误向右或向左移动。最初,错误向右移动,但它可以转向改变方向。在每次移动中,其位置在当前方向上改变一个单位。提供一个构造函数:

公开的错误(INT initialPosition)

和方法:

反过来,此举为getPosition

这是它应该如何在一个测试类工作的样本

bug bug1 = new bug(10) 
bug1.move // now the position is 11 
bug1.turn // changes direction 
bug1.move // now the position is 10 

这是我迄今为止所有的。

public class Bug { 
private int initialPosition; 
private int currentPosition; 

public Bug(int initialPosition){ 
    this.initialPosition = initialPosition + 1; 
} 
public void turn(){ 

} 
public void move(){ 
    currentPosition = initialPosition++; 

} 
public int getPosition(){ 
    return currentPosition; 
} 
} 

和我的测试类

public class BugTester { 

public static void main(String[] args) { 
    Bug roach = new Bug(10); 
    roach.move(); 
    roach.move(); 
    System.out.println(roach.getPosition()); 
} 

} 

输出:12

+1

输出结果与您的期望值有何不同? –

+0

为什么你认为你需要一个领域的初始位置?你为什么认为移动应该无条件地增加这个位置?你为什么认为你不需要记住现场的方向? –

+0

您需要在Bug类中有一个字段,指出该错误面向哪个方向,以便程序知道在错误移动时是增加还是减少位置。 –

回答

0
public class Bug { 
private int position; 
private int diff = 1; 

public Bug(int position){ 
    this.position = position; 
} 
public void turn(){ 
    if(diff == 1){ 
     diff = -1; 
    } else { 
     diff = 1; 
    } 
} 
public void move(){ 
    position += diff; 

} 
public int getPosition(){ 
    return position; 
} 
} 

花一些时间学习。

+6

'public void turn(){diff = -diff; }':-) –