来自其他类

时间:2017-03-14 19:01:04

标签: java class

我有3个课程:Main,AutoHuur,Auto。 Everythign只工作一件事。我似乎无法获得" Prijs"我的Auto.class中的变量显示在我的AutoHuur.class中的toString中。它一直显示为0.这是为什么? (我知道如果它是null,我将它初始化为0,但为什么它是null而不是Auto.class变量prijsPerDag中的值?)谢谢

Main.class:

    public class Main{
    public static void main(String[] args) {
        AutoHuur ah1 = new AutoHuur();
        System.out.println("Eerste autohuur:\n" + ah1 + "\n");

        Klant k = new Klant("Mijnheer de Vries");
        k.setKorting(10.0);
        ah1.setHuurder(k);
        Auto a1 = new Auto("Peugeot 207", 50.0);
        ah1.setGehuurdeAuto(a1);
        ah1.setAantalDagen(4);
        System.out.println("Eerste autohuur:\n" + ah1 + "\n");

        AutoHuur ah2 = new AutoHuur();
        Auto a2 = new Auto("Ferrari", 3500.0);
        ah2.setGehuurdeAuto(a2);
        ah2.setHuurder(k);
        ah2.setAantalDagen(1);
        System.out.println("Tweede autohuur:\n" + ah2 + "\n");

        System.out.println("Gehuurd: " + ah1.getGehuurdeAuto());
        System.out.println("Gehuurd: " + ah2.getGehuurdeAuto());
    }
}

Autohuur.class:

public class AutoHuur {
    private Klant huurder;
    private Auto gehuurdeAuto;
    private Auto prijs;

    private Integer aantalDagen;

    public AutoHuur(){
    }

    public void setHuurder(Klant nwH){
        huurder = nwH;
    }

    public void setGehuurdeAuto(Auto nwGA){
        gehuurdeAuto = nwGA;
    }

    public Auto getGehuurdeAuto(){
    return gehuurdeAuto;
    }

    public Auto getPrijs(){
    return prijs;
    }

    public void setAantalDagen(Integer nwD){
        aantalDagen = nwD;
    }

public String toString(){
    String s = "";

    if (gehuurdeAuto == null){
        s = s + "er is geen auto bekend\n"; }
    else { 
    s = s + gehuurdeAuto; }

    if (huurder == null){
    s = s + "er is geen huurder bekend\n"; }
    else { 
    s = s + huurder; }

    if (aantalDagen == null){
    s = s + "aantal dagen: 0"; }
    else { 
    s = s + "aantal dagen: " + aantalDagen; }

    if (prijs == null){
        s = s + " en dat kost 0.0"; }
    else { 
    s = s + " en dat kost" + prijs; }

    return s;
}

}

Auto.class:

public class Auto {
    private String type;
    private Double prijsPerDag;

    public Auto(String tp, Double nwPr){
        type = tp;
        prijsPerDag = nwPr;
    }

    public void setPrijsPerDag(Double prPd){
        prijsPerDag = prPd;
    }

    public Double getPrijsPerDag(){
        return prijsPerDag;
    }

    public String toString(){
        String s = type + " met prijs per dag: " + prijsPerDag + "\n";
        return s;
    }
}

3 个答案:

答案 0 :(得分:2)

在AutoHuur.class中,您可以使用Auto对象从Auto.class获取prijsPerDag变量,例如:

gehuurdeAuto.getPrijsPerDag()

您可以计算价格:

aantalDagen * gehuurdeAuto.getPrijsPerDag()

这是你想做什么的?

答案 1 :(得分:0)

变量memory_limit = ?是一个对象,当创建prijs的实例时,该对象初始化为null。由于永远不会设置AutoHuur,因此始终为prijs

这就是null始终评估为prijs == null的原因。

您需要在某处设置true

您似乎需要处理您的设计理念。例如,您使用prijs类名称,而实际上是每日费用车型之间的链接。如果每个链接都由这样的对象表示(在您的情况下为Auto),那么拥有多个实例绝对没有意义。

例如,

Auto

在技术上完全有效,但这不符合逻辑。

此外,如果一个类包含某种类型的数据,那么将该数据的操作委托给该类也是好的。

new Auto("Peugeot", 40.0);
new Auto("Peugeot", 40.0);

答案 2 :(得分:0)

你必须删除第一个System.out因为在Main.java中你的实例AutoHuur是空的,所以当你想要打印结果时,out将是空值。