您将创建两个类,一个用于框,一个用于三角形。每个图形,框和三角形都有一个偏移量,表示它们从屏幕边缘缩进的距离。每个图形也都有一个尺寸,尽管尺寸将根据方框和三角形的不同而不同。 基类图将包含所有数据共有的任何属性的实例变量,并且将具有所有数字所具有的操作的方法。例如,每个图形都有一个给定的偏移量,每个图形都应该能够绘制自己。但是,因为我们不知道如何绘制未知形状的图形,所以将drawHere()声明为抽象方法,将Figure声明为抽象类。 Box和Triangle类将是图的派生类,它们将提供drawHere()的实现。这是图,框和三角形的UML图。
方法drawHere将简单地缩进屏幕上的多个空格,等于偏移量,然后在屏幕上写下星号。这只是为了让您可以测试一些东西。您不打算在任何应用程序中使用此版本的drawHere。在为框和三角形定义类时,您将覆盖drawHere的定义。
方法drawAt有一个int类型的参数。方法drawAt插入一些等于此参数的空行,然后通过调用drawHere绘制图形。当您覆盖drawHere时,drawAt也将生成正确的数字。
我需要一张打印出来的圣诞树:
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
*********************
-----
| |
| |
-----
图类:
public abstract class Figure
{
private int offset;
public Figure()
{
offset = 0;
}
public Figure(int theOffset)
{
offset = theOffset;
}
public void setOffset(int newOffset)
{
offset = newOffset;
}
public int getOffset()
{
return offset;
}
public void drawAt(int lineNumber)
{
for (int count = 0; count < lineNumber; count++)
System.out.println();
drawHere();
}
public abstract void drawHere();
}
三角类:
public class Triangle extends Figure
{
private int base;
public Triangle()
{
base = 0;
}
public Triangle(int offset, int base)
{
offset = 0;
this.base = base;
}
public void reset(int newOffset, int newBase)
{
newOffset = 0;
newBase = 0;
}
public void drawHere()
{
for (int count = 0; count < base; count++)
System.out.print("");
System.out.println("*");
}
}
Box class:
public class Box extends Figure
{
private int height;
private int width;
public Box()
{
height = 0;
width = 0;
}
public Box(int offset, int height, int width)
{
super(offset);
this.height = height;
this.width = width;
}
public void reset(int newOffset, int newHeight, int newWidth)
{
newOffset = 0;
newHeight = 0;
newWidth = 0;
}
public void drawHere()
{
for (int count = 0; count < width; count++)
System.out.print("");
System.out.println('-');
}
}
GraphicsTest类:
public class GraphicsTest
{
public static void main(String[] args)
{
Triangle top = new Triangle (5, 21);
Box base = new Box(13, 4, 5);
top.drawAt(1);
base.drawAt(0);
}
}
它返回的代码是:
*
-
我的问题是我需要在代码中修复什么才能打印出圣诞树。我试过改变drawHere方法中for循环的变量,没有什么能解决它。 谢谢你的帮助!
答案 0 :(得分:0)
以下是您使用代码获得结果的原因。
查看方法 drawHere
public void drawHere()
{
for (int count = 0; count < base; count++)
System.out.print("");
System.out.println("*");
}
在for-loop中你什么都没做。在此方法中,字符*
仅打印一次。这就是你只能在控制台*
上看到的原因。
出于同样的原因,在绘制Box时只有一个' - '。
答案 1 :(得分:0)
您的三角形方法是:
public void drawHere()
{
for (int count = 0; count < base; count++)
System.out.print("");
System.out.println("*");
}
这样做只打印出一颗星,因为你在for循环中打印一个空字符串。
以下是我通过实验为简单三角形绘制的代码。
int size = 11;
for(int i = 0; i < size-1; i++) {
for(int j = 0; j < size - (i+1); j++)
System.out.print(" ");
System.out.print("*");
for(int k = 0; k < 2*i - 1; k++)
System.out.print(" ");
if(i > 0)
System.out.print("*\n");
else
System.out.println();
}
for(int i = 0; i < size; i++)
System.out.print("* ");
以下是其后续输出:
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* * * * * * * * * * *