首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在未按预期工作的类之间传递布尔值

在未按预期工作的类之间传递布尔值
EN

Stack Overflow用户
提问于 2018-09-18 07:52:31
回答 1查看 38关注 0票数 0

我正在制作一个战舰游戏,我有3个班级和一个司机。

在player类中

我有这个方法

代码语言:javascript
复制
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;
    }

我在顶部有声明的变量和getter

代码语言:javascript
复制
private boolean s1Sunk; 
public boolean isS1Sunk() {
    return s1Sunk;
}

现在在我的另一个班级

代码语言:javascript
复制
Player player = new Player();
System.out.println(player.isS1Sunk());

如果我在驱动程序的一个方法中调用它,它仍然是假的,即使第一个方法的条件使它为真;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-18 08:05:04

假设您在代码示例中提到的方法都属于相同的Player类定义,然后通过执行以下操作来创建Player的新类实例(对象

代码语言:javascript
复制
Player player = new Player();

您将创建一个新的、独立于所有其他实例的Player类实例。除非您为该特定对象运行hitownshiporGrenade,否则它的变量不会改变。

请考虑以下几点:

代码语言:javascript
复制
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的知识!这将使你的代码更容易阅读,并且在你浏览它的时候省去了很多麻烦。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52377093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档