2014-03-28 49 views
0

我正在编写一个程序来创建一个动物,需要一些帮助来创建一种方法,当健康,能量或饥饿降到20以下的程度时,程序将打印出该动物的噪音。有一个超级动物,我目前正在研究一只狗。来自超类的方法

这里是动物类的代码示例:

public void setHungry(int Hungry) { 
    this.Hungry = Hungry; 

如何将这样如果饥饿低于20写一个方法程序会:

if (Hungry <= 20) 
System.out.println ("Grunt"); 

我不没有很多编码经验。 由于事先

我忘了说,这是一组任务,我不能改变动物类

+1

如果您需要检查饥饿是否低于20,为什么您要比较饥饿<= 0?另外,请尝试遵循Java命名约定。像'someVar'这样的名称用于变量/方法,并且像'SomeClass'这样的名称用于类。 – Christian

+0

除了你的代码检查与0而不是20对比的事实,我没有看到这个问题。你缺乏什么? – Mureinik

+0

你在哪里改变这个饥饿的价值?我建议你编辑一个控件,每当你编辑该值,以检查它是否已经<= 20。 – Karura91

回答

1

Animal.java

public abstract class Animal { 

    private int hungry; 

    public void setHungry(int hungry) { 
     this.hungry = hungry; 
     if(this.hungry <= 20) { 
      this.shout(); 
     } 
    } 

    public abstract void shout(); 

} 

Lion.java

public class Lion extends Animal { 

    @Override 
    public abstract void shout() { 
     System.out.println("GRRRRR"); 
    } 

} 

编辑:考虑到动物不能碰你,应该改变你的子类中setHungry的定义。我认为你有一个价值的吸气?或者价值受到保护?

public class Lion extends Animal { 

    @Override 
    public void setHungry(int hungry) { 
     super.setHungry(hungry); 
     if(this.getHungry() <= 20) { 
      System.out.println("GRRRRR"); 
     } 
    } 

} 
+0

我忘了提及这是一个小组任务,我不能改变动物类 – user3472848

+0

行!所以你可以给代码或至少是动物的行为。 – Thomas

+0

动物类中饥饿的代码是: public void setHungry(int Hungry){ \t \t this.Hungry = Hungry; \t}健康和能量的方法具有相同的布局 – user3472848

0

托马斯的方法是有效的,但让我建议另一种解决方案,以防您需要此检查在其他地方。

public abstract class Animal { 

    int hunger; 
    int energy; 
    int health; 

    public void makeNoise() { 
     if (hunger < 20 || energy < 20 || health < 20) { 
      System.out.println(getVoice()); 
     } 
    } 

    abstract protected String getVoice(); 
} 


public class Lion extends Animal { 
    String voice = "Grr"; 

    @Override 
    protected String getVoice() { 
     return voice; 
    } 
}