< 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();
}
}
}
'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 |