在main方法// Java中调用时,如何使布尔变量变为true

时间:2014-06-19 00:20:03

标签: java


我正在创建一个superHero类,在调用攻击方法时调用方法,但是一旦调用方法,如何将当前的假布尔值切换为true? 我的代码:

Random random = new Random();
double rand = random.nextDouble();
boolean att = false;
public double attack(double AttackDam, double Health, double Stamina, double BlockChance)
{
    do
    {
        if(BlockChance == 0.0)
        {
            Health = Health - AttackDam;
        }
        else
        {
            AttackDam = AttackDam - BlockChance;
            Health = Health - AttackDam%BlockChance;
            Stamina = Stamina - AttackDam%BlockChance;
        }
        att = false;
    }while(att == true);

    return Health;
}

2 个答案:

答案 0 :(得分:0)

Random random = new Random();
double rand = random.nextDouble();
boolean att = false;
public double attack(double AttackDam, double Health, double Stamina, double BlockChance)
{
            att = true;
    do
    {
        if(BlockChance == 0.0)
        {
            Health = Health - AttackDam;
        }
        else
        {
            AttackDam = AttackDam - BlockChance;
            Health = Health - AttackDam%BlockChance;
            Stamina = Stamina - AttackDam%BlockChance;
        }

    }while(att == true);
    return Health;
}

但你在哪里设置为假,以摆脱do...while循环?

答案 1 :(得分:0)

根据我的理解,你想要" att"调用攻击方法时,布尔值为true。然后,这将触发以下代码来计算要返回的运行状况。

如果这是正确的,那么每次调用该方法时,您都希望计算一次返回的健康状况,并且只返回一次,因此您不需要循环。我相信你认为你正在循环的是像

    boolean var;
    do{
        var = true;

        // some code

        var = false;
    }while(var);

但是,当你的循环中的最后一行将循环条件(布尔值)设置为false时,它确保循环永远不会循环回到顶部并再次运行。因此,它只相当于:

    boolean var;
    var = true;

    // some code

    var = false;

你应该做的是计算你想要多少次呼叫"攻击"函数,并循环多次调用它。一个例子就像下面这样,我用了一个" main"调用攻击函数的函数,但可以在任何地方替换

public static void main(String args[]) throws IOException {

    int numberOfTimesToAttack = 2;
    for(int i = 0 ; i < numberOfTimesToAttack; i++){
        attack(10.0,500.0,5.0,5.0);
    }

}

然后攻击功能是:

public double attack(double AttackDam, double Health, double Stamina, double BlockChance)
{
    if (BlockChance == 0.0) {
        Health = Health - AttackDam;
    } else {
        AttackDam = AttackDam - BlockChance;
        Health = Health - AttackDam % BlockChance;
        Stamina = Stamina - AttackDam % BlockChance;
    }
    return Health;
}

尝试将每个函数视为装配线的一部分。每个人都被打破了自己的工作,只做那个小工作,不担心别人的工作。攻击功能有一个目的,即模拟攻击。它不应该计算必须执行攻击的次数,这是一个不同的功能。