Java 程序创建形状并在控制台上显示它们

Java 程序创建形状并在控制台上显示它们,java,swing,awt,paint,shapes,Java,Swing,Awt,Paint,Shapes,我被分配了如下的小任务。你能解释一下如何实现这一点吗 编写一个简单的结构化程序和实现显示形状功能的简单oo程序。您的程序只需打印(到控制台)数字if shapes,然后要求每个shapes显示自己,这也将导致控制台生成一行输出,每个shapes对应一行。在对集合进行排序和显示形状之前,主程序创建一个形状集合是完全可以的。您的程序应该支持圆、三角形和正方形,但应该使用多态性,以便主程序不知道它正在处理的形状类型,而是统一处理形状 我创建了一个程序来创建如下所示的形状,但我不确定如何创建上面提到的形

我被分配了如下的小任务。你能解释一下如何实现这一点吗

编写一个简单的结构化程序和实现显示形状功能的简单oo程序。您的程序只需打印(到控制台)数字if shapes,然后要求每个shapes显示自己,这也将导致控制台生成一行输出,每个shapes对应一行。在对集合进行排序和显示形状之前,主程序创建一个形状集合是完全可以的。您的程序应该支持圆、三角形和正方形,但应该使用多态性,以便主程序不知道它正在处理的形状类型,而是统一处理形状

我创建了一个程序来创建如下所示的形状,但我不确定如何创建上面提到的形状,并将它们存储在集合中,然后迭代以在控制台上显示这些形状。我被告知不要使用数据库来存储形状

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JApplet;

public class DrawShapes extends JApplet {

    public void paint(Graphics g) {
        g.setColor(Color.RED);
// drawing string
        g.drawString("Hello World!", 100, 100);
// drawing rectangle
        g.draw3DRect(120, 120, 120, 120, true);
        g.setColor(Color.blue);
        g.fill3DRect(120, 120, 120, 120, true);
// drawing circle
        g.drawOval(240, 240, 120, 120);
        g.setColor(Color.CYAN);
        g.fillOval(240, 240, 120, 120);
// drawing square
        g.drawRect(350, 350, 250, 100);
        g.setColor(Color.magenta);
        g.fillRect(350, 350, 250, 100);
// drawing trinale
    }
}

只是一个如何做的想法。请注意,图形从“形状”集合中隐藏

interface Drawable {
  public void draw(Graphics g);
}

class DrawableSquare implements Drawable{
  public DrawableSquare(int x, int y, int width) { ... }
  public void draw(Graphics g) 
  {
    g.fillRect(x, y, width, width);
  }
}

class Screen {
  Collection<Drawable> drawables;

  public void paint(Graphics g) {
     for (Drawable dr: drawables) {
       dr.draw(g);
     }
  }
}
接口可绘制{
公共空间绘制(图g);
}
类DrawableSquare实现了DrawableSquare{
公共绘图正方形(整数x,整数y,整数宽度){…}
公共空间绘制(图g)
{
g、 fillRect(x,y,width,width);
}
}
类屏幕{
可提取的收藏品;
公共空间涂料(图g){
适用于(可提取dr:可提取){
draw博士(g);
}
}
}

我想他们想要的是类似于此页面的内容。如果我理解正确,您需要在控制台上打印!!!所以你需要用system.out.print函数来绘制它…是的。你的理解是正确的。它需要用SOPok打印到控制台,您应该从Dariusz answer中获取类并替换g.fillRect(x,y,width,width);带system.out.print(…);“你的理解是正确的。”好吧,那为什么要用小程序编写代码呢?这是一个GUI程序,而不是控制台程序。按照我阅读说明书的方式,他们想要。。顺便说一句,我要感谢你的老师没有强迫学生开发小程序。