如何在java中旋转星号梯形?
在学校作业中,我们必须在java中画一个带星号的梯形。构造函数类似于如何在java中旋转星号梯形?,java,loops,variable-assignment,Java,Loops,Variable Assignment,在学校作业中,我们必须在java中画一个带星号的梯形。构造函数类似于 梯形(int tWidth、int bWidth、char signA、char signB、int margin) tWidth:顶部宽度,bWidth:底部宽度,signA:前景符号,signB:背景符号和边距:bWidth的边距(左侧和右侧) 我的main()类如下所示: Trapezoid t = new Trapezoid(3, 9, '*', '-', 2); t.printTrapezoid(); -----*
梯形(int tWidth、int bWidth、char signA、char signB、int margin)
tWidth:顶部宽度,bWidth:底部宽度,signA:前景符号,signB:背景符号和边距:bWidth的边距(左侧和右侧)
我的main()
类如下所示:
Trapezoid t = new Trapezoid(3, 9, '*', '-', 2);
t.printTrapezoid();
-----***-----
----*****----
---*******---
--*********--
int width = 2* margin + bWidth;
int length = (width - tWidth) / 2;
while (tWidth <= bWidth) {
printChar(signB, length);
printChar(signA, tWidth);
printChar(signB, length);
System.out.println();
tWidth++;
}
那么它应该是这样的:
Trapezoid t = new Trapezoid(3, 9, '*', '-', 2);
t.printTrapezoid();
-----***-----
----*****----
---*******---
--*********--
int width = 2* margin + bWidth;
int length = (width - tWidth) / 2;
while (tWidth <= bWidth) {
printChar(signB, length);
printChar(signA, tWidth);
printChar(signB, length);
System.out.println();
tWidth++;
}
print梯形()
方法如下所示:
Trapezoid t = new Trapezoid(3, 9, '*', '-', 2);
t.printTrapezoid();
-----***-----
----*****----
---*******---
--*********--
int width = 2* margin + bWidth;
int length = (width - tWidth) / 2;
while (tWidth <= bWidth) {
printChar(signB, length);
printChar(signA, tWidth);
printChar(signB, length);
System.out.println();
tWidth++;
}
我不知道怎么做。有人能给我一个提示吗?
求你了,我不想要这里的解决方案。只是一个我如何解决它的提示。也许重构draw方法更好?我不知道…您还没有向我们展示整个
梯形类,但我猜它有一个字段tWidth
,您在构造函数中设置了该字段
如果是这种情况,那么您的print梯形
方法不应该更改它。该字段“顶部宽度”是梯形的一个属性,在打印时不应更改。所以在print梯形
中,您应该声明一个局部变量
int currentWidth = tWidth;
然后该方法应该修改这个局部变量,而不是tWidth
字段
完成后,通过使currentWidth
按相反顺序变为相同的值,可以很容易地看到如何打印倒置的梯形
编辑:如果rotate
应该更改梯形的属性,而不是打印一个倒置的梯形,那么这应该也很容易,因为您已经将print梯形
固定为不更改tWidth
和bWidth
,因此现在可以执行更改它们所需的操作(通过交换值)如果你只是翻转它,考虑上下行(顶部宽度和底部宽度),我对它的工作方式感到困惑,因为<代码>打印梯形只设置一次代码>长度>代码,因此应该在每行上打印相同数量的<代码> ->代码>。你在帖子中出错了吗?@Quincunx我试图更改行,但没有成功,因为我更改了tWidth。@ajb是的,长度应该在循环中。“对不起,”雨果说。当您切换tWidth
和bWidth
时会发生什么情况?