Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
您将创建两个类,一个用于框,一个用于三角形。每个图形(框和三角形)将具有一个偏移量,以告诉它们与屏幕边缘的缩进距离。每个图形都有一个尺寸,尽管对于一个盒子和一个三角形,尺寸是不同的。
基类Figure将具有所有图具有的所有属性的实例变量,并将具有所有图具有的操作方法。例如,每个图形都有给定的偏移量,并且每个图形都应该能够绘制自己。但是,由于我们不知道如何绘制形状未知的图形,因此将drawHere()声明为抽象方法,将Figure声明为抽象类。然后,Box和Triangle类将是Figure的派生类,它们将提供drawHere()的实现。这是“图”,“框”和“三角形”的UML图。
方法drawHere将简单地在屏幕上缩进等于偏移量的空格,然后在屏幕上写一个星号。只是为了您可以进行测试。您不打算在任何应用程序中使用此版本的drawHere。当定义框和三角形的类时,将覆盖drawHere的定义。
方法drawAt具有一个类型为int的参数。方法drawAt插入一些与此参数相等的空行,然后通过调用drawHere绘制图形。当您覆盖drawHere时,drawAt也将产生正确的数字。
我需要有一棵这样打印的圣诞树:
图类:
三角类:
箱类:
GraphicsTest类:
它返回的代码是:
我的问题是,我需要在代码中修复哪些内容才能将其打印出来。我尝试过改变drawHere方法中for循环的变量,没有任何办法可以解决它。
谢谢您的帮助!
这样做是只打印1星,因为您正在for循环内打印一个空字符串。
这是我通过实验为一个简单的三角形绘制的代码。
这是其后续输出:
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
6年前关闭。
您将创建两个类,一个用于框,一个用于三角形。每个图形(框和三角形)将具有一个偏移量,以告诉它们与屏幕边缘的缩进距离。每个图形都有一个尺寸,尽管对于一个盒子和一个三角形,尺寸是不同的。
基类Figure将具有所有图具有的所有属性的实例变量,并将具有所有图具有的操作方法。例如,每个图形都有给定的偏移量,并且每个图形都应该能够绘制自己。但是,由于我们不知道如何绘制形状未知的图形,因此将drawHere()声明为抽象方法,将Figure声明为抽象类。然后,Box和Triangle类将是Figure的派生类,它们将提供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("*");
}
}
箱类:
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循环的变量,没有任何办法可以解决它。
谢谢您的帮助!
最佳答案
您的三角方法是:
public void drawHere()
{
for (int count = 0; count < base; count++)
System.out.print("");
System.out.println("*");
}
这样做是只打印1星,因为您正在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("* ");
这是其后续输出:
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* * * * * * * * * * *
10-04 13:05