자바기초(프린트프로그램)

bitna's study note·2022년 4월 13일
0

자바

목록 보기
42/119

4월 13일 내용정리

아래는 내가 스스로 짜본 코드
처음으로 객체지향을 좀 이해해보고 짠코드...
감격..그전에도 코드를 짜봤으나 객체지향을 이해하고 짠건 아니고 남들이 짠코드 흉내정도...이번에는 다르다!!!

선언 클래스

package study_0413;

import java.util.Scanner;

public class printerPractice {
	
	/*코드설계
	 *초기용지 100장 설정
	 *10장을 인쇄하면 "10장 인쇄 했습니다."출력
	 *100-10=90 현재 남은 용지는 90장 있습니다.
	 * 
	 * 만약 용지가 부족하면 
	 *90장 남았는데 100장 더 출력하라고 하면 
	 *90-100=-10 90장은 출력하고 -10장은 모자른다고 출력하기
	 *용지를 보충할건지 묻기
	 *
	 *용지를 50장 보충한다고 하면
	 *기존 총장수=기존남은용지장+50하고
	 *총장수 남았습니다. 
	 *
	 *
	 *다짜면 양면인지 단면 인지 구분하고다시 출력하기 
	 * 양면 단면 구분했으면 private로 출력하기
	 * 
	 * 
	 * void는 메서드안에 컴파일러가 임의로 return을 넣어주며, 이것은 메서드가 끝났고, 반환값은 없으면 
	 * 호출한곳으로 돌아가 그다음거 실행
	 * 반환값이 있으면 반환타입과 return을 직접써주고 반화값을 호출한곳으로 데리고가서 마져 실행해줌
	 * 
	 */
	
	//필드 선언
	int printNum;
	int printMinus;
	int printPlus;
	
	//생성자
	public printerPractice(int printNum) {
		this.printNum=printNum;
	}
	
	//메서드 선언
	public int doubleCopy(int printMinus) {
		if(printMinus%2==0) {
			this.printMinus=printMinus/2;
			return this.printMinus;
		}else{
			this.printMinus=(printMinus/2)+1;
			return this.printMinus;
		}
	}
	
	public void showPrint(int printMinus) {
			Scanner scan=new Scanner(System.in);
			System.out.println("현재 프린트 용지 매수:"+printNum);
			
			System.out.println("단면인쇄(1)양면인쇄(2)");
			int num01=scan.nextInt();
			if(num01==1) {
				System.out.println("단면인쇄 필요 용지매수:"+printMinus);
				printNum-=printMinus;
			}else if(num01==2){
				doubleCopy(printMinus);
				System.out.println("양면인쇄 필요 용지매수:"+this.printMinus);
				printNum-=this.printMinus;
			}
			
			
			if(0<printNum) {
				System.out.println("남은 프린트 용지 매수:"+printNum);
			}else if(0==printNum){
				System.out.println("인쇄 용지가 없습니다.");
				System.out.println("용지를 보충하세요.");
				printNum=0;
				
				
				System.out.println("보충 하시겠습니까? yes(1),no(2)");
				int num=scan.nextInt();
				
				if(num==1) {
					System.out.println("보충매수를 입력하세요");
					int numPlus=scan.nextInt();
					showPlus(numPlus);
					
				}else if(num==2) {
					System.out.println("인쇄를 종료 합니다.");
					return;//메서드 빠져나오기
				}
				
			}else {
				System.out.println("인쇄 용지가"+(printNum*-1)+"장 모자릅니다.");
				System.out.println("용지를 보충하세요.");
				
				System.out.println("보충 하시겠습니까? yes(1),no(2)");
				int num=scan.nextInt();
				
				if(num==1) {
					System.out.println("보충매수를 입력하세요");
					int numPlus=scan.nextInt();
					showPlus(numPlus);
				}else if(num==2) {
					System.out.println("인쇄를 종료 합니다.");
					return; //메서드 빠져나오기
				}
			}
    }
	
	public void showPlus(int printPlus) {
		System.out.println(printPlus+"장 보충");
		System.out.println("추가인쇄"+(printNum*-1)+"장");
		printNum+=printPlus;
		System.out.println("현재 남은 용지 매수:"+printNum);
	}
	
}	

실행 클래스

package study_0413;

import java.util.Scanner;

public class printerPractice_Tset {

	public static void main(String[] args) {
		
		printerPractice PP =new printerPractice(100);
		Scanner scan=new Scanner(System.in);
		
		for(int i=0;true;i++) {
			
			
			System.out.println("인쇄진행하시겠습니까? yes(1),no(2)");
			int goStop=scan.nextInt();
			if(goStop==1) {
				
				System.out.println("현재 인쇄가능 매수는"+PP.printNum);
				
				System.out.println("인쇄매수를 입력하세요.");
				int num=scan.nextInt();
				PP.showPrint(num);
			}else if(goStop==2) {
				System.out.println("인쇄프로그램을 종료합니다.");
				break;
			}
			
		}
		
	}

}
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보