본문 바로가기

IT, 인터넷/JAVA, 스프링부트

자바 프린터 출력 용지 구분 코드 작성

반응형

자바에서 서브 클래스를 사용해서 프린터 용지를 구분하는 코드를 작성해 보겠습니다.

 

  • 소스코드

class Printer {

    

    private int numOfPpers// 총 용지 갯수

    private boolean duplex// 양면 구분

    

    public Printer(int numOfPpersboolean duplex) {

        this.numOfPpers = numOfPpers;

        this.duplex = duplex;

    }

    

    // amount : 출력할 용지수

    public void print(int amount) {

        

        if(duplex) { // 양면인 경우

            if(numOfPpers < amount) {

                int divide = amount / 2;

                

                if((amount % 2) > 0) {

                    divide += 1;

                }

                

                numOfPpers = numOfPpers - divide;

                

                System.out.println("양면으로 " + divide + "장 출력 했습니다. 현재" + numOfPpers + "장 남았습니다.");

            }

        } else { // 단면 출력

            boolean limit = true// 용지가 충분한지 구분

            

            // 용지가 충분 하지 않다면 false

            if(numOfPpers < amount) limit = false;

            

            if(limit) {

                numOfPpers = numOfPpers - amount;

                System.out.println("단면으로 " + amount + "장 출력 했습니다. 현재" + numOfPpers + "장 남았습니다.");

            } else {

                amount = amount - numOfPpers;

                System.out.println("단면으로 모두 출력 할려면 용지가 " + amount + "매 부족 합니다. " + numOfPpers + "장만 출력 합니다.");

            }

        }

    }

    

    public Boolean getDuplex() {

        return this.duplex;

    }

    

    public void setDuplex(boolean duplex) {

        this.duplex = duplex;

    }

}

 

public class PrinterTest {

 

    public static void main(String[] args) {

        

        Printer p = new Printer(20true);

        p.print(25);

        p.setDuplex(false);

        p.print(5);

        p.print(5);

    }

}

반응형