正如标题所指出的,我正在编写一个Java类,该类应该创建狗。

该代码是瑞典语,但并不难理解。

我的问题是在“setSvanslängd”方法中,这基本上意味着“ setTailLength”。

该方法应该查看品种(ras),如果品种是一种税收,则应将尾部长度设置为3.7,但是如果狗是其他品种,则应计算重量(vikt)x年龄(ålder)和然后将值返回到变量“ tailLength”(svanslängd)。

但是,当我尝试创建三只狗时,它的tailLength只返回0.0。

问题出在哪里或什么...?

先感谢您!

到目前为止,这是代码:

public class Hund {

    private String namn;
    private int ålder;
    private int vikt;
    private String ras;
    private double svanslängd;


    public Hund(String namn , int ålder , int vikt, String ras) {
        this.namn = namn;
        this.ålder = ålder;
        this.vikt = vikt;
        this.ras = ras;
    }

    public double setSvanslängd(){
        if(ras.equalsIgnoreCase("tax")) {
            svanslängd = 3.7;
            return svanslängd;
        } else {
            svanslängd = (ålder * vikt)/10.0;
        }
        return svanslängd;
    }

    public String getNamn(){
        return namn;
    }

    public int getÅlder(){
        return ålder;
    }

    public int getVikt(){
        return vikt;
    }

    public String getRas(){
        return ras;
    }

    public double getSvanslängd(){
        return svanslängd;
    }

    public String toString(){
        return namn+" "+ras+" "+ålder+" år "+vikt+" kg Svans= "+svanslängd;
    }

    public static void main (String[] args) {
        Hund hund1 = new Hund ("Fido", 2, 3, "tax" );
        Hund hund2 = new Hund ("Peter", 4, 6, "varg");
        Hund hund3 = new Hund ("Roger", 2, 3, "chiwava");

        System.out.println (hund1);
        System.out.println (hund2);
        System.out.println (hund3);
    }

}

最佳答案

这是因为您有一个永远不会调用的方法。

尽管您可以在setSvanslängd中添加对main方法的调用来解决此问题,但这不是最好的方法:最好在构造函数中设置尾部的长度,再也不要碰它。这将是一个更加直观的解决方案:

public Hund(String namn , int ålder , int vikt, String ras) {
    this.namn = namn;
    this.ålder = ålder;
    this.vikt = vikt;
    this.ras = ras;
    // Set the length of the tail
    if(ras.equalsIgnoreCase("tax")) {
        svanslängd = 3.7;
    }else{
        svanslängd = (ålder * vikt)/10.0;
    }
}

09-12 23:51