我正在创建一个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;
}
答案 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;
}
尝试将每个函数视为装配线的一部分。每个人都被打破了自己的工作,只做那个小工作,不担心别人的工作。攻击功能有一个目的,即模拟攻击。它不应该计算必须执行攻击的次数,这是一个不同的功能。