逻辑错误:输出工作正常,并产生第一输出,而当第2个输出检查,它生产的第一条语句Kids: 6
,但第二条语句New baby, kids now: 7
是从来没有生产,而是,产生New baby, kids now: 4
。有人能告诉我这段代码中的逻辑错误是什么?
建议:提示给我的提示是只能在代码的特定行中进行更改。你可以看到代码,在那里提到的改变只能在callPersonInfo.java
之间进行,而且在这些行之间的代码也可以在//changes must be made after this line. So NO changes above this line.
和//changes must be made above this line. So NO changes below this line.
之间。代码的其余部分没有问题。
预计1输出:
Kids: 3
New baby, kids now: 4
预计第2个输出:(不是第一次输出的一部分,但它应该有这方面的工作也只是检查代码的可靠性)
Kids: 6
New baby, kids now: 7
代码:(运行正常,但逻辑错误)
// ===== Code from file PersonInfo.java =====
public class PersonInfo {
private int numKids;
public void setNumKids(int personsKids) {
numKids = personsKids;
return;
}
public void incNumKids() {
numKids = numKids + 1;
return;
}
public int getNumKids() {
return numKids;
}
}
// ===== end =====
// ===== Code from file CallPersonInfo.java =====
public class CallPersonInfo {
public static void main (String [] args) {
PersonInfo person1 = new PersonInfo();
person1.setNumKids(3);
//changes must be made after this line. So NO changes above this line.
System.out.println("Kids: " + person1.getNumKids());
person1.setNumKids(4);
System.out.println("New baby, kids now: " + person1.getNumKids());
//changes must be made above this line. So NO changes below this line.
return;
}
}
// ===== end =====
这是一个非常基本的问题。你能告诉我们你解决问题的方法吗?你对理解这个问题有困难吗?在一般水平上,代码应该做什么? – dwjohnston
预期的输出2不会生成,但生成1并且没有问题。 – Anonymous
您是否将'person1.setNumKids(3)'更改为'person1.setNumKids(6)'?因为我看不出你是如何获得“Kids:6”作为输出的。 – splrs