본문 바로가기
study_java/java_수강정리(~10.29)

[JAVA]6일차

by developer_j 2020. 5. 19.
728x90
반응형

< 6일차 수업 >

 

내용이 점점 어려워지기 시작했다 ㅎㅎ 지난주 수업까지는 특강으로 커버쳤는데 슬슬 머리 쥐어뜯고 있다..  6일차에 배운것은 두가지당.

- break/continue 무한루프

- 별(*) 찍기


break/continue 무한루프

break; --> break 코드가 가장 근접하게 포함되어 있는 반복문 탈출

continue --> 실행하던 반복문의 나머지를 생략하고 반복문 조건검사로 이동


별(*)찍기

나는 별모양을 찍기 위해서 조금씩 구현해나가는 건 줄 알았는데, 그냥 * <-이게 별모양이라서 별찍기 였다고 한다..


1. 직사각형 모양으로 * 찍기 

/* 결과
*****
*****
*****
*****
*/
public class Lecture06 {
           public static void main(String[] args) {
                       for(int i = 1; i < 5 ; i++) {
                                  for(int j =0;j<5; j++) {
                                              System.out.print("*");
                                  }
                                  System.out.println("");
                       }
			}
}

<코드 설명>

i가 1부터 4까지 1씩 증가 = 4번 반복 (1,2,3,4)

i가 1일때 j가 0부터 5가 될때까지 1씩 증가하면서 *를 찍어나감

i가 2일때도 똑같음

--> i가 5 될때까지 계속 5번씩 *를 찍음


 2. 삼각형 모양으로 * 찍기 

/* 결과
*
**
***
****
*****
*/

public class Lecture06 {
           public static void main(String[] args) {
                       for(int i = 1; i<6 ; i++) {
                                  for(int j = 0; j<i ; j++) {
                                              System.out.print("*");
                                  }
                                  System.out.println();
                       }
           }
}

<코드 설명>

i가 1부터 6까지 1씩 증가 = 5번 반복 (1,2,3,4,5)

j는 0부터 i 크기 되기 직전까지 1씩 증가하면서 * 찍음

즉,

i가 1일때 j =0이므로 0<1. 조건식이 참이 되어 * 찍음. j가 1 증가하여 1<1. 조건식 거짓. i의 for문으로 돌아감 = * 한개 찍었음.

i가 2일때 j =0이므로 0<2. 조건식이 참이 되어 * 찍음. j가 1 증가하여 1<2. 조건식 참. *찍음. j가 1 증가하여 2<2. 조건식 거짓. i의 for문으로 돌아감 = * 두개 찍었음.

--> 이게 계속 반복되어서 결과 출력


2-1. 삼각형 모양으로 * 찍기 

/*결과
*****
****
***
**
*
*/
public class Lecture06 {
           public static void main(String[] args) {
                       for(int i = 1; i<6 ; i++) {
                                  for(int j = 6; j>i ; j--) {                
                                              System.out.print("*");      
                                  }
                                  System.out.println();
                       }
           }
}

<코드 설명>

i가 1부터 6까지 1씩 증가 = 5번 반복 (1,2,3,4,5)

j는 6부터 i 보다 큰 동안 1씩 감소하면서 * 찍음

즉,

i가 1일때 j =6이므로 6>1 - 5>1 - 4>1 - 3>1 - 2>1 순으로 j가 1씩 작아지면서 총 5번 *를 찍음. j가 5번 찍고 나서는 1이 되어 1>1. 조건식 거짓. i의 for문으로 돌아감.

i가 2일때 j =6이므로 6>2 - 5>2 - 4>2 - 3>2. 조건식이 2>2가 되면 거짓. i의 for문으로 돌아감.

--> 이게 계속 반복됨


2-2. 삼각형 모양으로 * 찍기 

/*결과
    *
   **
  ***
 ****
*****
*/
public class Lecture06 {
           public static void main(String[] args) {
                       for(int i = 1; i<6 ; i++) {
                                  for(int j = 5; j>i ; j--) {
                                              System.out.print(" ");//공백 먼저 찍고
                                  }
                                  for(int k =0; k<i;k++) {
                                  System.out.print("*");       //* 찍음.1,2,3,4,5...
                                  }
                       System.out.println();        //줄내리기
                       }
           }
}

<코드 설명>

 for문이 하나 더 필요하다.

원리 : 공백 찍는 수는 줄이고, *을 찍는 수는 늘리기

위 출력을 한글로 바꿔보면,

(공백 4) + (* 1)

(공백 3) + (* 2)

(공백 2) + (* 3)

(공백 1) + (* 4)

(공백 0) + (* 5)

 

감소시키면서 찍는건 바로 위에서 실컷했지만,  첫 for문 안에 2개의 for문이 있다는 점을 고려해서 다시 설명

i가 1부터 6까지 1씩 증가 = 5번 반복(1,2,3,4,5)

j는 5부터 i보다 큰동안 1씩 감소하면서 공백 찍음

k는 i 크기 만큼만 * 찍음( 첫줄에 * 한개 - 두번째줄에 ** 두개 찍기 위함)

 

즉,

i가 1일때,

- j =5이므로 5>1 - 4>1 - 3>1 - 2>1 순으로 공백 4번 찍고 종료.

  종료되고 나면 아래의 for문이 실행됨

- k =0이므로 0<1 조건식 참. * 한번 찍음

 

i가 2일때,

- j =5이므로 5>2 - 4>2 - 3>2 순으로 공백 3번 찍고 종료

  종료되고 나면 아래의 for문이 실행됨

- k =0이므로 0<2 조건식 참. * 찍음. k가 1씩 증가. 1<2 조건식 참. * 또찍음. = 총 2번 찍게됨.

 

--> 이것이 반복됨.


 

2-3. 삼각형 모양으로 * 찍기 

/*결과
*****
 ****
  ***
   **
    *
*/
public class Report06 {
           public static void main(String[] args) {
                        for(int i =1; i <6 ; i++) {
                                  for(int j=1 ; j<i;j++) {
                                              System.out.print(" ");
                                  }
                                  for(int k =6; k>i; k--) {
                                              System.out.print("*");
                                  }
                                  System.out.println();
                       }
           }
}

<코드 설명>

 for문이 하나 더 필요하다.

원리 : 공백 찍는 수는 늘리고, *을 찍는 수는 줄이기

위 출력을 한글로 바꿔보면,

(공백 0) + (* 5)

(공백 1) + (* 4)

(공백 2) + (* 3)

(공백 3) + (* 2)

(공백 4) + (* 1)

 

.

.

.


 + ) if문으로 별 찍는 코드를 찾았는데 이게 몬가 코드가 더 깔끔,,,(코쓱)

/*결과
    *
   **
  ***
 ****
*****
*/
public class Lecture06 {
           public static void main(String[] args) {
                       for(int i = 1; i<=5 ; i++) {
                                  for(int j = 5; j>0 ; j--) {
                                              if(j>i) {
                                                         System.out.print(" ");
                                              }else {
                                                         System.out.print("*");
                                              }
                                  }
                                  System.out.println();
                       }
           }
}

 

 

728x90
반응형

'study_java > java_수강정리(~10.29)' 카테고리의 다른 글

[JAVA]8일차  (0) 2020.05.20
[JAVA]7일차  (0) 2020.05.19
[JAVA]5일차  (0) 2020.05.15
[JAVA]4일차  (0) 2020.05.15
[JAVA]3일차  (0) 2020.05.13