首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改增加正方形长度的代码?

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

Stack Overflow用户
提问于 2017-10-08 07:43:54
回答 1查看 45关注 0票数 0

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

代码语言:javascript
复制
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;
    }
}

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

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-10-08 08:18:10

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

代码语言:javascript
复制
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);
    }

第二个选项是始终按需计算面积,而不存储它。由于计算简单且快速,因此这是一个很好的选择:

代码语言:javascript
复制
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;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46626171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档