Java OOP中一个有趣的任务,我不知道';得不到
这是一项为Java初学者准备考试的任务。它让我恶心 有人能解释一下为什么会这样吗? 有人能纠正我吗:) 我试着一步一步地做所有的方法,对我来说是这样的: 1) 鲍姆豪斯b=鲍豪斯(2,3) 这意味着: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
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()在main方法中,code>意味着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);