티스토리 뷰

배움과 복습

2017-08-25 금요일 배움 5일

뚜비콩 2017. 8. 25. 09:17

1교시 

어제 마지막 실습에 대한 풀이 중


지역변수랑 전역변수에 대해, 그리고 '초기화'에 대한 이해가 부족한 것 같음

정수형인지 실수형인지 애매하다 싶으면 무조건 큰 걸로 하는 것

double이나 long... 

예전에는 메모리 관리가 민감했으나 요즘은 용량이 늘어나서 그다지 중요한 부분은 아니라고 생각


public class IfSwitch { //if, if~else, if~else if public void ex3( char code, int ea ) { int price; //String name1 = "냉장고"; //이렇게 하라는 건가? //String name = ""; //상품명 넣을 건데 일단 초기화 //int amt = 0; //sum으로 묶은 것을 선생님은 amt로 묶으셨음 //double vat = 0; //부가세(amt*0.1) //double tot = 0; //총 금액(amt + vat) if ( code == 'A') { price = 1000; System.out.println("상품 코드: " +code); System.out.println("상품명: 냉장고"); System.out.println("단가: " +price); System.out.println("수량: " +ea); System.out.println("금액: " +ea*price); int sum = ea * price; System.out.println("부가세: " +(int)(sum*0.1)); int sum2 = (int)(sum*0.1); System.out.println("총액: " +(sum+sum2)); } else if ( code == 'B') { price = 2000; System.out.println("상품 코드: " +code); System.out.println("상품명: 세탁기"); System.out.println("단가: " +price); System.out.println("수량: " +ea); System.out.println("금액: " +ea*price); int sum = ea * price; System.out.println("부가세: " +(int)(sum*0.1)); int sum2 = (int)(sum*0.1); System.out.println("총액: " +(sum+sum2)); } else if ( code == 'C') { price = 3000; System.out.println("상품 코드: " +code); System.out.println("상품명: 컴퓨터"); System.out.println("단가: " +price); System.out.println("수량: " +ea); System.out.println("금액: " +ea*price); int sum = ea * price; System.out.println("부가세: " +(int)(sum*0.1)); int sum2 = (int)(sum*0.1); System.out.println("총액: " +(sum+sum2)); }else if ( code == 'B') { price = 4000; System.out.println("상품 코드: " +code); System.out.println("상품명: 자동차"); System.out.println("단가: " +price); System.out.println("수량: " +ea); System.out.println("금액: " +ea*price); int sum = ea * price; System.out.println("부가세: " +(int)(sum*0.1)); int sum2 = (int)(sum*0.1); System.out.println("총액: " +(sum+sum2)); } } //switch public void ex4( char code, int ea ) { int price; int sum = 0; int sum2 = 0; switch ( code ) { case 'A' : price = 1000; System.out.println("상품 코드: " +code); System.out.println("상품명: 냉장고"); System.out.println("단가: " +price); System.out.println("수량: " +ea); System.out.println("금액: " +ea*price); sum = ea * price; System.out.println("부가세: " +(int)(sum*0.1)); sum2 = (int)(sum*0.1); System.out.println("총액: " +(sum+sum2)); break; case 'B' : price = 2000; System.out.println("상품 코드: " +code); System.out.println("상품명: 세탁기"); System.out.println("단가: " +price); System.out.println("수량: " +ea); System.out.println("금액: " +ea*price); sum = ea * price; System.out.println("부가세: " +(int)(sum*0.1)); sum2 = (int)(sum*0.1); System.out.println("총액: " +(sum+sum2)); break; case 'C' : price = 3000; System.out.println("상품 코드: " +code); System.out.println("상품명: 컴퓨터"); System.out.println("단가: " +price); System.out.println("수량: " +ea); System.out.println("금액: " +ea*price); sum = ea * price; System.out.println("부가세: " +(int)(sum*0.1)); sum2 = (int)(sum*0.1); System.out.println("총액: " +(sum+sum2)); break; case 'D' : price = 4000; System.out.println("상품 코드: " +code); System.out.println("상품명: 자동차"); System.out.println("단가: " +price); System.out.println("수량: " +ea); System.out.println("금액: " +ea*price); sum = ea * price; System.out.println("부가세: " +(int)(sum*0.1)); sum2 = (int)(sum*0.1); System.out.println("총액: " +(sum+sum2)); break; } } public static void main(String[] args) throws IOException { IfSwitch play = new IfSwitch(); // 제일 먼저 클래스를 객체화 시켜야하는 것입니당. // 맨 왼쪽에 클래스 명이 가장 먼저 나와야 한다 그리고 객체형(변수..) 만들고 // new 연산자를 사용하여생성자 선언 //play.ex1(); //play.ex2(); play.ex3('A', 10); //if System.out.println("----------비교 구분선----------"); play.ex4('C', 10); //switch } }


*번외* 

prn 메소드를 만들어서 출력을 좀 더 쉽고 추후 수정 또한 편이하게 해보자


	public void prn( char code, String name, int dan, int ea, int amt, double vat, double tot) {
		//이 자리에 프린트할 모든 것들을 불러온다
		//if나 switch문에서 메소드를 또 불러오면? 하나만 수정하면 되니까 간편하잖아
		System.out.println("----------------------------");
		System.out.println("상품 코드: "+code);
		System.out.println("상품명: "+name);
		System.out.println("단가: " +dan);
		System.out.println("수량: " +ea);
		System.out.println("금액: " +amt);
		System.out.println("부가세: "+vat);
		System.out.println("총액: " +tot);
		
		// 호출 방법: this.prn( code, name, dan, ea, amt, vat, tot );
		// 이렇게 써넣으면 알아서 prn 메소드를 호출하는 것이다
		// 여기서 [this]는 자기 자신을 의미하는 의미
		// 고수들은 this.을 꼭 쓴다 ㅋㅋㅋㅋ 고수 티를 내고 싶다면 추천
	}
	

※코드는 위의 prn 메소드에 맞춰서 if문/switch문 다 수정해야 하는 것


2교시

일주일 배운 것 복습합니다

		String name = 'A';

name은 참조형(reference) 변수! 

String이냐 String Buffer냐 String Builder냐 고정 문자열에 대한 것을 배우게 되면 고민해야 할 부분입니다.

int = 4byte

double = 8byte

char = 2byte         //유니코드도 저장할 수 있음

boolean = true; (or false;)         //두가지 값만 갖는다


this.prn()         //'.'을 통해서 가지고 있는 객체를 호출한다


  • 오늘 배우는 것
    • for문 (이해하면 테트리스 게임 짜는 것이 가능!)

for문의 구조를 외워야 합니다.

int sum = 0;
		for ( i = 0; i <= 100 ; i++) {
			sum = sum + i;
		}


오류가 나진 않지만 설정을 잘못 한다면 상황에 따라 무한루프에 빠질 수도 있다.

무한루프=데드락 걸렸네.

탈출 조건을 명시해줘야하는데 잘못됐기 때문에 발생하는 것.

강제로 멈추고 수정해주는 일이 필요하다.


  • for문을 이용해 1과 100사이의 숫자 중 2의 배수만 출력하기(단, for문만 사용할 것)
	public void ex2() {		System.out.println("* * * 2의 배수(짝수)(1~100) * * *");
		int i = 0;
		for (i=2; i<=100; i+=2) {
			//if(i%2 == 0) {
				System.out.println(i);
			//}
		}
	}


  • for문을 이용해 1과 100사이의 숫자 중 5의 배수만 출력하기(단, for문만 사용할 것)
	public void ex3() {
		System.out.println("* * * 5의 배수(1~100) * * *");
		int i = 0;
		for (i=5; i<=100; i+=5) {
			//if(i%5 == 0) {
				System.out.println(i);
			//}
		}
	}

  • for문을 이용해 1~100까지의 합을 구하기
	public void ex4() {
		int sum = 0;		//합계
		int i = 0;		//for문을 위한 제어 변수
		for (i=1; i<=100; i++) {
			sum = sum + i;
		}
		System.out.println("1~100까지의 합계: " +sum);
	}

-위의 코드 약간의 응용

	public void ex4() {
		int sum = 0;		//합계
		int i = 0;		//for문을 위한 제어 변수
		for (i=1; i<=100; i++) {
			sum = sum + i;
			System.out.println("1~"+i+"까지의 합계: " +sum);
		}	
		//System.out.println("1~100까지의 합계: " +sum);
	}
  • 매개 변수 세 개를 받아 연산하는 것
    • x부터 y까지의 수 중 z의 배수만을 출력하시오.
	public void ex7 (int x, int y, int z ) {
		for (int m=(x+(z-(x%z))); m<=y; m+=z) {
			System.out.println(m);
		}
	}

->시작값 설정을 유의해서 봅시다. x보다 크거나 같으면서 z의 배수인 수가 되게 만드는 방법. 


  • for문을 사용한 구구단
	//n단 뽑기
	public void ex10(int dan) {
		int r = 0;
		System.out.println("*************"+dan+"단");
		for(int a=1; a<=9; a++){
			r = dan * a;
			System.out.println(dan+ " * "+a+" = "+r);
		}
	}
	
	//구구단
	public void ex11() {
		int dan = 0;
		int r = 0;
		int sum = 0;
		for (dan=2; dan<10; dan++) {
			System.out.println("*************"+dan+"단");
			this.ex10(dan);
//			for (r=1; r<10; r++) {
//				sum = dan * r;			
//				System.out.println(dan + " * "+r+" = "+sum);
//			}
		}
	}


  • 반복 출력하기, print사용하기, 줄 바꿈 활용, 숫자 역순으로 출력하기
		//for문 속 for문
	public void ex12() {
		int x;
		int y;
		System.out.println("-----ex12");
		for (x=1; x<6; x++){
			for (y=1; y<6; y++) {
				System.out.print(x);
			}
			System.out.println();
		}
	}
public void ex13() {
		int x;
		int y;
		System.out.println("-----ex13");
		for (x=1; x<6; x++){
			for (y=1; y<6; y++) {
				System.out.print(y);
			}
			System.out.println();
		}
	}
	public void ex14() {
		int x=0;
		int y=0;
		int k=0;
		System.out.println("-----ex14");
		for (x=1; x<6; x++){
			for (y=1; y<6; y++) {
				++k;
				System.out.print(k+"	 ");
			}
			System.out.println();
		}
	}
	public void ex15() {
		int x=0;
		int y=0;
		int k=26;
		System.out.println("-----ex14");
		for (x=1; x<6; x++){
			for (y=1; y<6; y++) {
				k--;
				System.out.print(k+"	 ");
			}
			System.out.println();
		}
	}

행이 고정되고 열(Column)이 바뀌도록 코드를 짜는 경우가 대부분입니다.

행과 열을 고정시키고 값을 어떻게 운용할 것인지를 생각하면 조금 더 수월하게 코드를 짤 수 있을 것 같습니다. 


	//1에서 1까지, 1에서 2까지, 1에서 3까지...., 1에서 5까지
	public void ex16() {
		int x=0;
		int y=0;
		System.out.println("-----ex16");
		for (x=1; x<6; x++){
			for (y=1; y<=x; y++) {
				System.out.print(y);
			}
			System.out.println();
		}
	}
	public void ex17() {
		int x=0;
		int y=0;
		int k=1;
		System.out.println("-----ex17");
		for (x=1; x<6; x++){
			for (y=1; y<=x; y++) {
				System.out.print(k+" ");
				k++;
			}
			System.out.println();
		}
	}




댓글