前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >抽象类实现打印不同的图形

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

原创
作者头像
菜菜有点菜
发布2023-11-19 12:04:45
发布2023-11-19 12:04:45
17900
代码可运行
举报
文章被收录于专栏:白菜博客白菜博客
运行总次数:0
代码可运行

动态生成图像:

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

代码语言:javascript
代码运行次数:0
复制
/**
 * @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
代码运行次数:0
复制
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();
                        }
                    }

                }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档