java - 修改增加正方形长度的代码?

标签 java methods

此代码包含一些逻辑错误,但我在发现它们并根据这些逻辑错误更改代码时遇到问题

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;
    }
}

该程序应该根据边长计算面积,然后增大正方形。它使边长加倍。按照我现在设置的方式,该区域会随着新大小而变化吗?还有其他逻辑错误吗?

谢谢

最佳答案

除非你对它们进行了编程,否则程序中的事情不会发生。你有两个选择。第一个是您始终同时分配 sideLengtharea。由于您不希望代码重复,并且无法再次调用构造函数,因此最好在单独的方法中执行此操作:

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/

相关文章:

java - 链表删除方法返回删除的节点和新节点

java - 调用方法错误

java - Log4j2 错误处理

java mysql输入NULL

java - 无法在 JSON 输出中获取 JPA 实体 ID

java - 难以理解为什么子类化单例与单例的定义相矛盾?

java - Java中需要静态 block 输出的解释

java - 使用反射调用 Integer.parseInt 方法

javascript - JavaScript .includes() 方法的多个条件

java - 与抽象类的继承混淆。方法会互相覆盖吗?