Java OOP中一个有趣的任务,我不知道';得不到

Java OOP中一个有趣的任务,我不知道';得不到,java,oop,object,Java,Oop,Object,这是一项为Java初学者准备考试的任务。它让我恶心 有人能解释一下为什么会这样吗? 有人能纠正我吗:) 我试着一步一步地做所有的方法,对我来说是这样的: 1) 鲍姆豪斯b=鲍豪斯(2,3) 这意味着: b.hohe = 2 b.breite = 3 2) 鲍姆豪斯c=马赫布雷特(b) 3) c.nachbar=b c.nachbar.hohe = 2 c.nachbar.breite = 3 d.n.h = 3 d.n.b = 3 4) 鲍姆豪斯d=machHoeher(b) 5) d.n

这是一项为Java初学者准备考试的任务。它让我恶心

有人能解释一下为什么会这样吗? 有人能纠正我吗:) 我试着一步一步地做所有的方法,对我来说是这样的:

1) 鲍姆豪斯b=鲍豪斯(2,3)

这意味着:

b.hohe = 2
b.breite = 3
2) 鲍姆豪斯c=马赫布雷特(b)

3) c.nachbar=b

c.nachbar.hohe = 2
c.nachbar.breite = 3
d.n.h = 3
d.n.b = 3
4) 鲍姆豪斯d=machHoeher(b)

5) d.nachbar=b

c.nachbar.hohe = 2
c.nachbar.breite = 3
d.n.h = 3
d.n.b = 3
6) ++c.hoehe

c.h = 3
c.b = 4
7) 鲍姆豪斯e=machHoeher(b)

8) e.nachbar=c

e.n.h =3
e.n.b =4
9) e.breite=b.breite-1

e.b = 2
10) c.hoehe++

c.h = 4
c.b = 4
11) c.breite-=2

c.b = 2 
有人能解释一下为什么在程序b.hohe=4的末尾??对我来说是2

public class Hausbauer {
    static Baumhaus bauHaus(int hoehe, int breite){
        Baumhaus b = new Baumhaus();
        b.hoehe = hoehe;
        b.breite = breite;
        return b;
}

    static Baumhaus machBreiter(Baumhaus b){
        Baumhaus bb = new Baumhaus();
        bb.hoehe = b.hoehe;
        bb.breite = b.breite + 1;
        return bb;
}

    static Baumhaus machHoeher(Baumhaus b){
        b.hoehe++;
        return b;
}

public static void main(String[] args){


    Baumhaus b = bauHaus(2, 3);
    Baumhaus c = machBreiter(b);
    c.nachbar = b;


    Baumhaus d = machHoeher(b);
    d.nachbar = b;
    ++c.hoehe;
    Baumhaus e = machHoeher(b);
    e.nachbar = c;
    e.breite = b.breite - 1;
    c.hoehe++;
    c.breite -= 2;
    boolean bUndCBenachbart = (b.nachbar == c || c.nachbar == b);

    //QUESTIONS AND ANSWERS
    System.out.println(bUndCBenachbart);
    System.out.println(b.breite  );
    System.out.println(b.hoehe  );
    System.out.println(c.breite  );
    System.out.println(c.hoehe  );
    System.out.println(d.breite  );
    System.out.println(d.hoehe  );
    System.out.println(e.breite  );
    System.out.println(d.hoehe  );
    System.out.println(Baumhaus.naechsteNummer  );

}
}

class Baumhaus{
    public int hoehe;
    public int breite;
    public Baumhaus nachbar;
    public int nummer = ++naechsteNummer;
    static int naechsteNummer = 0;
}

您应该使用方法而不是函数,这也使代码更易于理解。(此外,正如中东和北非地区所提到的,英文代码中的德语名称很奇怪)


通常,初学者代码中的static表示您做错了什么。

用德语编写类和变量名的Java考试?从一开始就不是一个好的考试。
machBreiter(Baumhaus b)
可能会返回作为参数传递的相同实例,而不是新的实例-很像
machHoeher(Baumhaus b)
@Mena。这也让我不寒而栗,但德国的一些教授/教师创建了这样的代码(以及
gibHoehe()
而不是
getHeight()意味着
b
是它自己的邻居,并且
c
上的每个操作都会反映在
b
上(它们都引用相同的对象)。因此,要么代码错误,要么方法都必须返回一个新实例。。。所以我还没有写。所以我不明白为什么在执行代码之后会有b.hohe=4。所以你的答案不是关于我的问题:如果是这样的话,彼得·劳里的答案是最有用的:-)老实说,这是了解发生了什么最简单的方法。。。
public class Hausbauer {
    static Baumhaus bauHaus(int hoehe, int breite){
        Baumhaus b = new Baumhaus();
        b.hoehe = hoehe;
        b.breite = breite;
        return b;
}

    static Baumhaus machBreiter(Baumhaus b){
        Baumhaus bb = new Baumhaus();
        bb.hoehe = b.hoehe;
        bb.breite = b.breite + 1;
        return bb;
}

    static Baumhaus machHoeher(Baumhaus b){
        b.hoehe++;
        return b;
}

public static void main(String[] args){


    Baumhaus b = bauHaus(2, 3);
    Baumhaus c = machBreiter(b);
    c.nachbar = b;


    Baumhaus d = machHoeher(b);
    d.nachbar = b;
    ++c.hoehe;
    Baumhaus e = machHoeher(b);
    e.nachbar = c;
    e.breite = b.breite - 1;
    c.hoehe++;
    c.breite -= 2;
    boolean bUndCBenachbart = (b.nachbar == c || c.nachbar == b);

    //QUESTIONS AND ANSWERS
    System.out.println(bUndCBenachbart);
    System.out.println(b.breite  );
    System.out.println(b.hoehe  );
    System.out.println(c.breite  );
    System.out.println(c.hoehe  );
    System.out.println(d.breite  );
    System.out.println(d.hoehe  );
    System.out.println(e.breite  );
    System.out.println(d.hoehe  );
    System.out.println(Baumhaus.naechsteNummer  );

}
}

class Baumhaus{
    public int hoehe;
    public int breite;
    public Baumhaus nachbar;
    public int nummer = ++naechsteNummer;
    static int naechsteNummer = 0;
}
House house=new House(2,4);
house.broaden(2);
house.lengthen(4);