好的,我说我有一个班级
class Ghost {
private int x, y, direction;
private Color color;
现在说我没有明确定义构造函数,所以它只使用默认构造函数。如果我要创建一个新的Ghost对象,那么方向有什么价值? 0对吗?但我不知道为什么我一直为方向获得1的值。你觉得有什么不对劲吗?
答案 0 :(得分:1)
你能告诉我们更多代码吗?在这里发生了其他事情。
int
变量将在Java中默认初始化为0,如果我使用您的代码段并实例化Ghost
,则其所有int
成员都为0。
因此,根据您的评论,我认为您的代码可能存在问题,例如您在使用direction
或Ghost.setX
时意外设置Ghost.setY
。
在我非常简单的类实现中,这个测试代码完全符合预期。
自代码发布以来编辑
好的,我有一个基于你的代码的课程。我没有看到其他函数有什么问题,因为很少有类实际改变direction
。我删除了那些额外的函数,因为它们没有修改方向,除了一个将它设置为0的东西。
您应该尝试一个非常简化的测试用例,看看您的代码是否有效。试试这个:
import junit.framework.Assert;
class Ghost
{
private int x, y, direction;
public int getX() { return x; }
public void setX(int x) { this.x = x; }
public int getY() { return y; }
public void setY(int y) { this.y = y; }
public int getDirection() { return direction; }
public void setDirection(int direction) { this.direction = direction; }
public static void main (String [] args)
{
Ghost g = new Ghost();
g.setX(10);
g.setY(20);
Assert.assertEquals(g.getDirection(), 0);
System.out.println(g.getX() + " " + g.getY() + " " + g.getDirection());
}
}
此处仍然有效,请按原样尝试该代码。这纯粹是你的代码,如果它有效(并且它应该),那么还有其他代码,比如类的用户正在做某事。
独立,您的代码应该可以正常工作。
使用调试器
您熟悉调试器吗?如果您使用的是Eclipse或NetBeans,那么您应该使用集成到其环境中的调试器。这应该可以帮助您在direction
通过放置手表来更改值时跟踪。
使用调试器超出了本答案的范围;这是你真正需要阅读并尝试自己的东西。
以下是使用Eclipse进行调试的链接:
答案 1 :(得分:1)
有些东西你没有向我们展示。你的getDirection()方法是简单地返回方向,还是做一些更奇特的东西?有没有一个setter方法可以做一些奇怪的事情?您没有向我们展示的课程的其他部分是否会以某种方式修改方向?
在Java中,int类型的实例变量初始化为0,因此您要么没有向我们展示某些内容,要么使用某些非标准实现(几乎绝对不是后者)。