如果语句逻辑没有按预期工作

时间:2013-08-29 03:53:12

标签: java loops

我正在为我的Java课程制作一个狗文本冒险游戏,我最近的任务是为游戏添加概率和训练。

基本上我生成了一个随机数,如果与该技能相关的数字 例如,“Shake”大于设定数字,然后狗将成功执行该技巧。

那部分对我来说是100%的工作。

现在添加培训是我遇到问题的地方。我将每个技能设置为初始值1.每次成功执行一项技能时,该值增加1。

我的目标是让最大值为3,如果达到最大值,那么狗每执行一次就会执行一次技巧!

这就是我所拥有的,希望有人可以解释为什么它不起作用

    // Sit
    if (Trick.equalsIgnoreCase("Sit")) {
        if (roll >= 4 || sitSkill == 3) {
            System.out.println("\n" + name + " sat down for you!");
            energy -= 10;
            food -= 5;
            sitSkill ++;
            happy ++;
        } else {
            System.out.println("\n" + name + " did not perform the trick successfuly.");
            energy -= 10;
            food -= 6;
            happy -= 20;
        }
    }

3 个答案:

答案 0 :(得分:7)

我无法确切地说出您正在尝试获得哪些帮助,但我能看到的最明显的问题是,在sitSkill == 3的情况下,您仍然会调用sitSkill++,并且所以在那次迭代之后,它将等于4,如果滚动太低,则会触发else语句。

答案 1 :(得分:3)

我认为你必须在达到3后停止增量sitSkill,否则每次sitSkill == 3始终为假时它都会递增。

 if(roll >= 4 || sitSkill == 3){
    if(sitSkill < 3) {
        sitSkill++;
    }
    System.out.println("\n" + Name + " sat down for you!");
    Energy -= 10;
    Food -= 5;
    Happy ++;
}

答案 2 :(得分:0)

更改

if(roll >= 4 || sitSkill == 3)

if(roll >= 4 || sitSkill >= 3)

if(Trick.equalsIgnoreCase("Sit")){
        if(roll >= 4 || sitSkill == 3){
            System.out.println("\n" + Name + " sat down for you!");
            Energy -= 10;
            Food -= 5;
            sitSkill = sitSkill == 3 ? sitSkill : sitSkill +);
            Happy ++;
        }
        else{
            System.out.println("\n" + Name + " did not perform the trick successfuly.");
            Energy -= 10;
            Food -= 6;
            Happy -= 20;
        }
    }