(抬头,我从来没有写过一个合适的节目,所以请耐心等待我)
我试图编写一个if语句来比较两个实例的position
字段的值(字面上返回整数" position")。问题是,它们是不同类中的私有字段,因此我无法直接访问它们。相反,我在每个类中创建了返回变量的方法。
现在在我的if语句中,这是条件是真/假:
if (enemy1.getPosition() = player.getGun1Position())
现在的问题是,如果我使用=
,机器会假设我尝试为enemy1
的位置分配一个值,而我一直在研究如何{ {1}}比较内存位置而不是两个字段的值。
我也读过那个
==
可以使用,但我假设它不能在这里使用,因为
.equals()
在我尝试时出错。
注意:我无法将字段更改为公开字段,因为这是针对作业的,而字段必须是私有的。
任何帮助将不胜感激:)
答案 0 :(得分:0)
你有没有试过==
?
如果真的要退出一个整数,那么==
就是要走的路。
你不能在诸如int,char,double,float,long,short,byte之类的原语上调用函数。所以没有.equals()来调用。
对于类,你需要调用.equals(),因为类变量就像一个指针,所以你不想用==
比较两个指针。但是,原始变量只包含它们的“值”,因此==
非常适合比较值。
如果您还没有尝试过,那么您需要对编码进行更多实验。
试试吧。
System.out.println(enemy1.getPosition()+" == "+ player.getGun1Position()+": "+(enemy1.getPosition()==player.getGun1Position()));
if(enemy1.getPosition()==player.getGun1Position())
{
//blah
}
如果这不起作用,那么你不是返回一个int原语,而是返回一个Integer对象(注意大写I)。
在这种情况下,
if(enemy1.getPosition().equals(player.getGun1Position()))
OR
if(enemy1.getPosition().getIntValue()==player.getGun1Position().getIntValue()))
应该可以正常工作。
答案 1 :(得分:0)
我将简要介绍一下比较。
1)原语只需要==运算符来匹配值,但不是许可的字符串值将比较它们的内存位置。对于字符串使用.equals()。
2)对于像Integer这样的基元对象,Double仍然将内存位置与==运算符进行比较。你需要调用他们的.equals来比较它们。如果你有自己的类,你需要定义自己的equals方法版本,意味着覆盖。