본문 바로가기

코딩공부일지/자바독학

[자바혼공] 복습, 조건문과 반복문

  • 자료출처

생활코딩 by egoing - 자바: https://opentutorials.org/module/516
남궁석의 자바의정석: https://github.com/castello/javajungsuk_basic/


[ 조건문 ]

1. IF 문
- 가장 기본적인 조건문,
1) 조건문 구성: 조건문 / {} 로 구성

if (조건식) {
//조건식이 true 일 때 실행되는 문장
}

ex) int score =70
if ( score > 80 ) {
System.out.println("통과");
}
=========> 실행 x

2) 조건문 예시

90 <= x && x <= 100 정수 x 90이상 100이하
x < 0 || x> 100 정수 x 0보다 작거나 100보다 큼
x%3==0 && x%2!=0 정수 x를 3으로 나눈 나머지가 0이고, x를 2로 나눈 나머지는 0이 아님 (x는 3의배수 이면서 2의 배수가 아님)
ch=='y' || ch== 'Y' 문자 ch가 y 또는 Y
ch==' ' || ch == '$t' || ch=='$t' 문자 ch가 공백, 탭, 개행문자
'A' <== ch && ch <= 'Z' 문자 ch가 대문자
'a' <== ch && ch <= 'z' 문자 ch가 소문자
'0' <== ch && ch <= '9' 문자 ch가 숫자
str.equals("yes") 문자열 str 내용이 "yes" (대소문자 구분)
str.equalsIngorecase("yes") 문자열 str내용이 "yes" (대소문자 구분x)

#유의: 등가비교 연산자 "==" ("="아님)
3) 블력 {}": 블럭 뒤에는 ";"를 붙이지 않음
- 블럭 내 문장이 한 문장일때는 블럭 생략가능 / 한 줄로 쓰는 것도 가능

if(score>60) {
System.out.println("합격입니다");
}

====>
if(score>60) System.out.println("합격입니다");


4) if -else 문: 블럭의 값이 거짓일 떄 else블럭의 문장 수행

if (조건식) { 조건식이 참 일때 수행
} else { 조건식이 거짓일 때 수행
}


5) else - if else if

if (조건식a) {조건식a가 true일 때 수행}
} else if (조건식b) { 조건식 a 가 false 이고 b가 true일 때 수행}
} else if (조건식c) {조건식 a,b가 false 이고 c가 true 일 때 수행}
} else { 조건식 a,b,c가 모두 false일 때 수행, 생략가능
}


===>조건식 a 부터 차례대로 평가하여 true가 되는 문장을 만나면 해당 블럭만 수행하고 if~if else 문을 벗어남
참인 조건식이 하나도 없으면 else 블럭을 수행, else 블럭은 생략가능

6) 중첩의 if 문

if (조건식 a) { 조건식 a가 true일 때 수행
if 조건식 b { 조건식 a 가 true 이면서, b도 true일 때 수행
} else { 조건식 a가 true 이면서 b는 false 일 때 수행
}
} else {조건식 a가 false일 때 수행
}


2. switch 문:

1] 조건식 계산
2] 조건식 결과와 일치하는 case로 이동
3] 이후 문장 수행
4] break문이나 switch 문의 끝을 만나면 switch 문을 빠져나감

switch (조건식) {
case 값 1 :
// 조건식의 결과가 값1과 같을 경우 수행 //
break;
case 값 2:
// 조건식의 결과가 값2과 같을 경우 수행 //
break;
case 값 3:
// 조건식의 결과가 값3과 같을 경우 수행 //
break;
default : 조건식의 결과와 일치하는 case문이 없을 경우 수행

2) switch 문의 제약조건:
-결과값은 반드시 정수, case 문의 값 역시 정수
- case문은 중복 불가
- case문의 값은 반드시 상수 (변수, 실수는 case문의 값으로 사용 불가)

3) switch 문/ if 문 예제

결과값 3,4,5 "봄", 6,7,8 "여름", 9,10,11 "가을", 12,1,2 "겨울"

[1] if 문

int month = ?;
if (month==3 || month==4 || month==5) {
System.out.println("봄");
} else if ( month==6 || month==7 || month==8) {
System.out. println("여름");
} else if ( month==9 || month==10 || month==11) {
System.out. println("가을");
} else {
System.out. println("겨울");
}


[2] switch 문
int month = ?;

switch (month){
case 3:
case 4:
case 5:
System.out.println("봄");
break;
case 5: case 6: case 7:
System.out.println("여름");
break;
case 8: case 9: case 10:
System.out.println("가을");
break;
default:
System.out.println("겨울");
}


[ 반복문 ]

: for, while문 (상호 변환가능), 반복횟수를 알고 있을 시 for, 반복횟수를 모를 시 while
1. for 문
1) 구조

for ( [1]초기화; [2]조건식; [4]증감식) {
// [3]조건이 true인동안 수행되는 문장
}

* 실행순서: [1] -> [2] -> [3] -> [4]

2) 초기화: 맨 처음 한 번만 수행, 둘 이상 변수 필요시 ,로 구분, 변수간 타입 일치 필요

for (int i =1; i<=10; i++) { }

두개 이상 변수 (,)
for (int i=1, j=0; i<=10, i++) { }

3) 조건식: 조건식이 true인 동안 반복/ 조건식의 값이 true 이면 반복, false 이면 반복 중단, for 문 벗어남
->조건식 작성오류시 for문이 아예 실행되지 않거나 무한루프
4) 증감식

for( int i =1; i<=10, i++) { } // 1~10 1씩 증가

for( int i =10; i<=1, i--) { } // 10~1 1씩 감소

for( int i =1; i<=10, i+=2) { } // 1~10 2씩 증가

for( int i =1; i<=10, i*=3) { } // 1~10 *3씩 증가
두 개 이상 증감식(,)
for (int i=1, j=10 ; i<=10; i++, j--) { }

5) 중첩의 for문
- 별찍기

***********
***********
***********
***********
***********

[1단계]
for ( i=1; i<=5, i++) {
System.out.println(**********);
}

[2단계]
=> for ( i=1; i<=5, i++) {
for (i=1, i<=10, i++) {
System.out. print("*");
}
System.out.println();
}

*
**
***
****
*****

[1단계]
for ( i=1; i<=1, i++) {
System.out.print("*");
}
System.out.println();

for ( i=1; i<=2; i++) {
System.out.print("*");
}
System.out.println();

for ( i=1; i<=3; i++) {
System.out.print("*");
}
System.out.println();

for ( i=1; i<=4; i++) {
System.out.print("*");
}
System.out.println();

for ( i=1; i<=5; i++) {
System.out.print("*");
}
System.out.println();

[2단계]
for ( i=1; i<=1;i++) {
for ( j=1, j=i, j++)
System.out.print("*")
}
System.out.println();
}

2. while 문
1) 구조: 초기화; 조건식 + 블럭; 증감식;

초기화;

while (조건식){
// 조건식의 결과가 true인 동안 반복할 문장
증감식;
}

ex) while 문
int i=1;
while(i<=10) {
System.out.println(i);
i++;
}

ex) for문
for (int i=1; i<=10, i++)
System.out.println(i);
}

- 조건식 참 => 블럭 내 문장 수행 후 다시 조건식으로
-조건식 거짓==> 문장 전체 벗어남
2) do-while 문 : while 문 변형, while 문 조건식<->블럭 순서바꿈

do {
} while ( );


3. break문/ continue문
1) break문: 자신이 포함된 가장 가까운 반복문을 벗어남. switch, while과 함께 사용
2)continue문: 반복문 끝으로 이동하여 다음 반복으로 넘어감, 반복문 내에서만 사용가능
반복문 전체를 벗어나지 않고 다음 반복을 계속 수행함. 전체반복 중 특정조건을 만족하는 조건을 제할 때 사용

ex)
for ( int i=0; i<=10, i++) {
if(i%3==0)
continue;
System.out.println(i);
}