抽象类实现打印不同的图形

2023-11-19 12:04:45 浏览数 (2)

动态生成图像:

根据用户不同的半径边长 输出不同大小的图像。

代码语言:javascript复制
/**
 * @deprecated 动态生成图像
 */

//创建aa类
class AA {
    //    成员变量初始化
    private int hw = 0;

    //空构造器  用于实例化对象
    public void AA() {
    }

    //有参构造器
    public void setHw(int hw) {
        this.hw = hw;
    }

    //成员方法
    public void getCharGUI() {
//        行
        for (int i = 0; i < hw; i  ) {
//            控制上下边界
            if (i == 0 || i == hw - 1) {
//                行输出个数控制
                for (int j = 0; j < hw; j  ) {
                    System.out.print("哈 ");
                }
            } else {
//                列 输出个数控制
                for (int j = 0; j < hw; j  ) {
//                    控制左右边界
                    if (j == 0 || j == hw - 1) {
                        System.out.print("哈 ");
                    } else {
                        System.out.print("   ");
                    }
                }
            }
            System.out.println();
        }
        System.out.println();
    }

}

//子类B集成父类A
class BB extends AA {
    //    成员变量
    private int r = 0;

    //    空构造器 不写 系统自带。 用于实例化对象
    public void BB() {
    }

    //    带参构造方法
    public void setr(int r) {
        this.r = r;
        super.setHw(r);     // 访问父级成员方法
    }

    //    成员方法
    public void getLoveGUI() {
        super.getCharGUI();
        double rIn = this.r - 0.4;  // 内圆半径
        double rOut = this.r   0.4;  // 外圆半径
        for (double y = this.r; y >= -this.r; --y) {  // 外部循环控制y坐标,从上边界到下边界
            for (double x = -this.r; x < rOut; x  = 0.5) {  // 内部循环控制x坐标,从左边界到右边界,步长为0.5
                double value = x * x   y * y;  // 当前位置的x和y坐标的平方和
                if (value >= rIn * rIn && value <= rOut * rOut) {  // 如果当前位置在空心圆形范围内,则输出星号*
                    System.out.print("哈 ");
                } else {  // 否则输出空格
                    System.out.print("  ");
                }
            }
            System.out.println();  // 每一行结束后换行
        }
    }

}

实例化:

代码语言:javascript复制
int i = 0;
                System.out.println("[*]请输入图像像素大小,输入0退出程序t");
                while (true) {
                    System.out.print("[*]等待输入>t");
                    Scanner scanners = new Scanner(System.in);
                    int r = scanners.nextInt();
                    if (r == 0) {
                        break;
                    }
                    System.out.println();
                    System.out.print("图像生成进度t:");
                    for (i = 0; i <= 100; i  ) {
                        Thread.sleep(10);
                        System.out.print("■");
                        if (i == 100) {
                            System.out.println("t"   i   "%");
                            System.out.println();
                            BB bb = new BB();
                            bb.setr(r);
                            bb.getLoveGUI();
                            System.out.println();
                        }
                    }

                }

0 人点赞