Shadowrayyy 2021-10-20 20:02 采纳率: 71.4%
浏览 39
已结题

Java基础编程关于manages printers devices

根据图1,2的要求完成编码,然后运行图3中的代码,使其结果跟图4一样。

img

img

img

img




```import java.util.ArrayList;
public class DriverClass {
    public static void main(String[] args) {
        ArrayList<Printer> printers = new ArrayList<>();
        // add Laser and Inkjet printers the same ArrayList
        printers.add(new LaserPrinter("HP", "H1", 100));
        printers.add(new InkjetPrinter("Cannon", "C1", 150));
        printers.add(new LaserPrinter("DELL", "D1", 100));
        printers.add(new InkjetPrinter("HP", "H2", 50));
        // lets test printer 1
        //how many pages do we have
        System.out.println(printers.get(0));
        // send a task to printer 1 with 100 pages
        printers.get(0).printPages(100);
        // print number of pages the printer can print
        System.out.println(printers.get(0));
        // lets test printer 2
        System.out.println(printers.get(1));
        // send a task to printer 1 with 100 pages
        printers.get(1).printPages(50);
        // print number of pages the printer can print
        System.out.println(printers.get(1));
        // now lets send a big task to printer 3
        printers.get(2).printPages(5000); // rejected: no enough ink
        for (Printer printer : printers)
            System.out.printf("For printer %s-%s we have printed %d\n",printer.getMaker(),printer.getModel(),printer.getPrintedPageCount());
    }
}
  • 写回答

1条回答 默认 最新

  • 广大菜鸟 2021-10-20 22:29
    关注
    import java.util.ArrayList;
    
    interface IPrinter{
        int calculatePagesAvailable();
        void updateInkLevel(int nPages);
        void printPages(int nPages);
    }
    abstract class Printer implements IPrinter{
        String maker;
        String model;
        int printedPageCount; // the number of pages a printer ables to print
    
        public Printer(String maker, String model) {
            this.maker = maker;
            this.model = model;
            this.printedPageCount=0;
        }
    
        @Override // add the input to the printedPageCount
        public void printPages(int nPages) {
            this.printedPageCount += nPages;
        }
        public int getPrintedPageCount() {
            return printedPageCount;
        }
        @Override
        public String toString() {
            return "Printer{" +
                    "maker=\'" + maker +
                    "\', model=\'" + model +
                    "\', pages Left=" + this.calculatePagesAvailable() +
                    '}';
        }
    
        public   String getMaker(){ return this.maker;}
    
        public  String getModel(){ return this.model;}
    }
    class LaserPrinter extends Printer{
        double cartridgeSize;
    
        public LaserPrinter(String maker, String model, double cartridgeSize) {
            super(maker, model);
            this.cartridgeSize = cartridgeSize;
        }
    
        @Override
        public int calculatePagesAvailable() {
            return (int)(this.cartridgeSize/0.05);
        }
    
        @Override
        public void updateInkLevel(int nPages) {
            this.cartridgeSize -= (0.05*nPages);
        }
    
        @Override
        public void printPages(int nPages) {
            int availablePages = this.calculatePagesAvailable();
            if(availablePages>=nPages){
                super.printPages(nPages);
                updateInkLevel(nPages);
            }else{
                System.out.println("No enough ink for printer "+maker+"-"+model);
            }
        }
    }
    class InkjetPrinter extends Printer{
        double inkSize;
    
        public InkjetPrinter(String maker, String model,double inkSize) {
            super(maker, model);
            this.inkSize=inkSize;
        }
    
        @Override
        public int calculatePagesAvailable() {
            return (int)(this.inkSize/0.09);
        }
    
        @Override
        public void updateInkLevel(int nPages) {
            this.inkSize-=(0.09)*nPages;
        }
    
        @Override
        public void printPages(int nPages) {
            int availablePages = this.calculatePagesAvailable();
            if(availablePages>=nPages) {
                super.printPages(nPages);
                this.updateInkLevel(nPages);
            }else{
                System.out.println("No enough ink");
            }
        }
    }
    
    
    public class DriverClass {
        public static void main(String[] args) {
            ArrayList<Printer> printers = new ArrayList<>();
            // add Laser and Inkjet printers the same ArrayList
            printers.add(new LaserPrinter("HP", "H1", 100));
            printers.add(new InkjetPrinter("Cannon", "C1", 150));
            printers.add(new LaserPrinter("DELL", "D1", 100));
            printers.add(new InkjetPrinter("HP", "H2", 50));
            // lets test printer 1
            //how many pages do we have
            System.out.println(printers.get(0));
            // send a task to printer 1 with 100 pages
            printers.get(0).printPages(100);
            // print number of pages the printer can print
            System.out.println(printers.get(0));
    
            // lets test printer 2
            System.out.println(printers.get(1));
            // send a task to printer 1 with 100 pages
            printers.get(1).printPages(50);
            // print number of pages the printer can print
            System.out.println(printers.get(1));
    
            // now lets send a big task to printer 3
            printers.get(2).printPages(5000); // rejected: no enough ink
            for (Printer printer : printers)
                System.out.printf("For printer %s-%s we have printed %d\n", printer.getMaker(), printer.getModel(), printer.getPrintedPageCount());
    
        }
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月21日
  • 已采纳回答 10月21日
  • 创建了问题 10月20日

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题