布尔错误输出

时间:2018-11-23 15:09:58

标签: java boolean

我的代码:

public class Kuh {

private String name;
private boolean istSatt;

public Kuh(String name, boolean istSatt) {

}

public double gibMilch() {

    if (istSatt == true) {

        System.out.println(10.0);
        return 10.0;

    } else {

        System.out.println(3.0);
        return 3.0;
    }

}

public void grasen() {

    istSatt = true;

}

public static void main(String[] args) {

    Kuh Frida = new Kuh("Frida", true);

    Frida.gibMilch();
    Frida.grasen();
    Frida.gibMilch();

}

}

我的问题:创建时将对象“ Frida”的“ istSatt”设置为“ true”。因此,当使用方法“ gibMilch”时,应将其输出为“ 10”。尽管如此,它还是输出“ 3”,就像布尔值是假的一样,即使我将其设置为true也是如此。使用“ grasen”后仅输出“ 10”。 我做错了什么?

3 个答案:

答案 0 :(得分:3)

您没有将构造函数参数分配给这些字段。

public Kuh(String name, boolean istSatt) {
    this.name = name;
    this.istSatt = istSatt;
}

答案 1 :(得分:0)

您需要在构造函数中设置类变量值:

public Kuh(String name, boolean istSatt) {
    this.name = name;
    this.istSatt = istSatt;
}

this指的是您要实例化的类。

答案 2 :(得分:0)

请尝试执行此操作,因为在呼叫Kuh Frida = new Kuh(“ Frida”,true);时似乎没有分配任何内容。

public class Kuh {

private String name;
private boolean istSatt;

public Kuh(String name, boolean istSatt) {
    this.istSatt=istSatt;
    this.name=name;

}

public double gibMilch() {

    if (istSatt) {

        System.out.println(10.0);
        return 10.0;

    } else {

        System.out.println(3.0);
        return 3.0;
    }

}

public void grasen() {

    istSatt = true;

}

public static void main(String[] args) {

    Kuh Frida = new Kuh("Frida", true);

    Frida.gibMilch();
    Frida.grasen();
    Frida.gibMilch();

}

}