此代码包含一些逻辑错误,但我在发现它们并根据这些逻辑错误更改代码时遇到问题
public class square {
private int sideLength;
private int area;
public square( int initialLength ) {
sideLength = initialLength;
area = sideLength * sideLength;
}
public int area() {
return area;
}
public void grow() {
sideLength = 2 * sideLength;
}
}
该程序应该根据边长计算面积,然后增大正方形。它使边长加倍。按照我现在设置的方式,该区域会随着新大小而变化吗?还有其他逻辑错误吗?
谢谢
最佳答案
除非你对它们进行了编程,否则程序中的事情不会发生。你有两个选择。第一个是您始终同时分配 sideLength
和 area
。由于您不希望代码重复,并且无法再次调用构造函数,因此最好在单独的方法中执行此操作:
public class Square {
private int sideLength;
private int area;
public Square(int initialLength) {
setSideLength(initialLength);
}
// Separate method to update sideLength and area together.
private void setSideLength(int sideLength) {
this.sideLength = sideLength;
this.area = sideLength * sideLength;
}
public void grow() {
setSideLength(2 * sideLength);
}
第二个选项是始终按需计算面积而不存储它。由于计算简单且快速,因此这是一个不错的选择:
public class Square {
private int sideLength;
public Square(int initialLength) {
this.sideLength = initialLength;
}
public void grow() {
sideLength *= 2;
}
// Calculate area on-demand
public int area() {
return sideLength * sideLength;
}
}
关于java - 修改增加正方形长度的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46626171/