Java实现Shape接口的Rectangle类draw()方法如何使用构造传入的宽高绘制矩形
问题原因
你当前的实现有三处错误:
- draw方法内部重新声明了局部变量
height、width,直接覆盖了类的成员变量,所以永远只会用硬编码的3来绘制 - 代码中混入了HTML转义字符(
<、"),属于粘贴时的格式错误 - 每行星号输出后额外加了空格,和预期输出不符
修复方法
替换你的draw方法为以下代码即可:
@Override public void draw() { // 强转int适配循环计数要求,若不需要小数宽高可直接将成员变量改为int类型 int rowCount = (int) this.height; int colCount = (int) this.width; for (int i = 0; i < rowCount; i++) { for (int j = 0; j < colCount; j++) { System.out.print("*"); } System.out.println(); } }
注意:由于你的成员变量宽高是double类型,上述代码做了int强转,会截断小数部分。如果需要支持小数宽高向上取整,可以将强转逻辑替换为
(int) Math.ceil(this.height)即可。
修改完成后运行new Rectangle(4,5).draw()就会输出符合要求的5行、每行4个星号的矩形。
内容的提问来源于stack exchange,提问作者Paco
相关产品推荐
相关产品推荐

