Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中旋转星号梯形?_Java_Loops_Variable Assignment - Fatal编程技术网

如何在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(); -----*

在学校作业中,我们必须在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 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
时会发生什么情况?