我正在制作战舰游戏 我有3个班级和一个司机。
在玩家职业中
我有这种方法
public void hitownshiporGrenade(String[][] grid, String attack) {
// checking if attack hits our ship, appropriate
// if it does place an s in the array
if (attack.equals(s1)) {
// -97 gives us a starting point at 0 for 'a' to
// store in array, same for 49 and '1'
grid[attack.charAt(0) - 97][attack.charAt(1) - 49] = "s ";
System.out.println("ship hit!");
s1Sunk = true;
}
我上面有声明的变量和吸气剂
private boolean s1Sunk;
public boolean isS1Sunk() {
return s1Sunk;
}
现在在我的其他班上
Player player = new Player();
System.out.println(player.isS1Sunk());
如果我在驱动程序的方法中调用它,即使第一个方法条件使它成立,它也会保持假数值;
答案 0 :(得分:1)
假设您在代码示例中提到的方法都属于相同的Player
类定义,然后通过创建Player
的新类实例(对象)
Player player = new Player();
您将创建一个Player
类的新的(与所有其他对象分开)的实例。除非您为该SPECIFIC对象运行hitownshiporGrenade
,否则它的变量不会改变。
请考虑以下内容:
Player player1 = new Player(); //player1.isSunk is false
Player player2 = new Player(); //player2.isS1Sunk is again false,
//and separate from player1.isS1Sunk
player1.hitownshiporGrenade(foo, bar) //This changes player1.isSunk to true
System.out.print(player1.getIsSunk()); //true, assuming lucky hits
System.out.print(player2.getIsSunk()); //false
我还建议您使用正确的Camel case when naming your variables进行阅读!这将使您的代码更易于阅读,并且在您处理代码时省去很多麻烦。