조건문 - if, switch
조건문은 조건식과 문장을 포함하는 블럭 { } 으로 구성.
조건문은 if문과 switch문이 있음.
if문
if (조건식){
//조건식이 참일때 수행될 문장들을 적는다.
}
만일 조건식이 'true'이면 괄호 안의 문장들을 수행.
조건식은 일반적으로 비교연산자와 논리연산자로 구성.

※ 등가비교 연산자 '==' 대신 대입 연산자 '='를 사용하지 않도록 주의
조건식의 결과는 반드시 true 또는 false이어야 함.
if-else 문
if (조건식1) {
// 조건식1의 연산결과가 참일 때 수행될 문장들을 적음.
} else if (조건식2) {
// 조건식2의 연산결과가 참일 때 수행될 문장들을 적음.
} else if (조건식3) {
// 조건식3의 연산결과가 참일 때 수행될 문장들을 적음.
} else { // 마지막에는 주로 else블럭으로 끝나며, else블럭은 생략 가능.
// 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적음.
}
첫 번째 조건식부터 순서대로 평가해서 결과가 참인 조건식을 만나면 해당 블럭 { }만 수행하고, 'if-else'문 전체를 벗어남.
if문의 블럭 내에 또 다른 if문을 포함시키는 것이 가능함.
→ 중첩 if문
if (조건식1){
// 조건식1의 연산결과가 true일때 수행될 문장들
if (조건식2){
//조건식1과 조건식2가 모두 true일 때 수행될 문장들
} else {
// 조건식1이 ture이고, 조건식2가 false일 때 수행되는 문장들
}
} else {
// 조건식1이 false일 때 수행될 문장들
}
switch문
if문과 다르게 switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있음. (처리할 경우의 수가 많은 경우 if문보다 유리함.)
다만 switch문은 제약조건이 있음.
- 조건식을 계산
- 조건식의 결과와 일치하는 case문으로 이동
- 이후의 문장들을 수행
- break문이나 switch문의 끝을 만나면 switch문을 빠져나감
- default문 : if문의 else와 같은 역할. 조건식의 결과와 일치하는 case문이 하나도 없는 경우 default문으로 이동함.
- break문 : 각 case문의 영역을 구분하는 역할. ( 만일 생략하면, 일치하는 case 이후의 모든 case를 다 실행하게 됨.)
switch (조건식) {
case 값1 :
// 조건식의 결과가 값1과 같을 경우 수행될 문장들
break;
case 값2 :
// 조건식의 결과가 값2와 같을 경우 수행될 문장들
break; // switch 문을 벗어남.
default :
// 조건식과 일치하는 case문이 없을 때 수행될 문장들
}
switch문의 제약조건
1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.
int month = scanner.nextInt();
switch(month) {
case 3:
case 4:
case 5:
System.out.println("봄");
break;
case 6: case 7: case 8:
System.out.println("여름");
break;
case 9: case 10: case 11:
System.out.println("가을");
break;
default:
System.out.println("겨울");
}
switch문의 중첩
if문처럼 switch문도 중첩이 가능함.
Scanner scanner = new Scanner(System.in)
String regNo = scanner.NextInt();
char gender = regNo.charAt(7); // 입력받은 번호의 8번째 문자를 gender에 저장.
switch(gender) {
case '1': case '3':
switch(gender){
case '1':
System.out.println("2000년대 이전에 출생한 남성");
break;
case '3':
System.out.println("2000년대 이후에 출생한 남성");
}
break;
case '2': case '4':
switch(gender){
case '2':
System.out.println("2000년대 이전에 출생한 여성");
break;
case '4':
System.out.println("2000년대 이후에 출생한 여성");
}
break;
default:
System.out.println("유효하지 않은 주민등록번호");
}
💡charAt() 이란?
: string으로 저장된 문자열 중에서 한글자만 선택해서 char으로 변환.
String str = new String();
char c = ' ';
str = "안녕하세요";
c = str.charAt(0);
System.out.println(c);
반복문 - for, while, do-while
어떤 작업이 반복적으로 수행되게 함.
반복문의 종류 : for, while, do-while.
for문과 while문은 구조와 기능이 유사함. for문은 주로 반복횟수를 알고 있을 때 사용함.
for문
반복 횟수를 알고 있을 때 적합.
for (초기화;조건식;증감식) {
// 조건식이 참일 때 수행될 코드
}
- 초기화 : 반복문에 사용될 변수를 초기화하며, 처음에 한번만 실행됨.
- 조건식 : 값이 참이면 반복을 계속, 거짓이면 반복을 중단하고 for문을 벗어남.
- 증감식 : 반복문을 제어하는 변수의 값을 증가 또는 감소
세 가지 요소는 모두 생략가능함.
for ( ; ; ) { . . . }
대신 블록 { }안에 if문을 넣어서 특정 조건을 만족하면 for문을 빠져나오게 해야함.
중첩for문
*****
****
***
**
*
for(int i=5;i>0;i--){
for(int j=0;j<i;j++){
System.out.print("*");
}
System.out.println();
}
향상된 for문
JDK1.5부터 for문의 새로운 문법이 추가됨.
for ( 타입 변수명 : 배열 또는 컬렉션) {
// 반복할 코드
}
int [ ] arr = {10,20,30,40,50};
배열 arr을 위와 같이 선언했을 때.
for (int i=0; i <arr.length;; i++){
System.out.println(arr[i]);
}
for (int tmp : arr){
System.out.println(tmp);
}
While 문
if문과 다르게 while문은 조건식이 '참인 동안' 블럭 { } 내의 문장을 반복.
※for문과 달리 while문의 조건식은 생략 X
while (조건식) {
// 조건식의 연산결과가 참인 동안, 반복될 문장들
}
- 조건식이 참이면 블럭 { }안으로 들어가고 거짓이면 while문을 벗어난다.
- 블럭 { }의 문장을 수행하고 다시 조건식으로 돌아간다.
int i = 1; //초기화
while (i<=10) { // 조건식
System.out.println(i);
i++ // 증감식
}
while(flag) { // flag의 값이 true이므로 조건식은 참
System.out.print(">>");
Scanner scanner = new Scanner(System.in)
String tmp = scanner.nextLine();
num = Integer.parseInt(tmp);
if(num!=0){
sum += num;
} else{
flag = false;
}
}
while문의 조건식이 상수는 아니지만, 변수가 고정된 값을 유지하므로 무한반복문과 비슷함.
특정 조건을 만족할 때 반복을 멈추게 하는 if문이 필요함.
Do-while 문
기본적인 구조는 while문과 같으나 조건식과 블럭{ } 의 순서를 바꿔놓은 것.
while문은 조건식에 따라 블럭이 한 번도 수행되지 않을 수 있지만, do-while문은 최소한 한번은 수행될 것을 보장함.
do {
// 조건식의 연산결과가 참일 때 수행될 코드
} while (조건식);
Break 문
break문은 자신이 포함된 가장 가까운 반복문을 벗어남.
int sum = 0;
int i = 0;
while(true) {
if(sum > 100)
break;
i++;
sum += i;
} // end of while
Continue 문
continue문은 반복문 내에서만 사용가능.
진행 도중에 continue 문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어감.
반복문 전체를 벗어나지 않고 다음 반복을 계속 수행하며 전체 반복 중에서 특정조건을 만족하는 경우를 제외하고자 할 때 유용.
for ( int i=0; i<=10; i++){
if (i%3 ==0)
continue;
System.out.println(i);
}'JAVA' 카테고리의 다른 글
| JAVA STUDY - CH7 : 객체지향 프로그래밍 - 2 (2) | 2025.01.14 |
|---|---|
| JAVA STUDY - CH6 : 객체지향 프로그래밍 - 1 (1) | 2025.01.10 |
| JAVA STUDY - CH 3 : 연산자 operator (0) | 2024.07.01 |
| JAVA STUDY - CH 5 : 배열 Array (0) | 2024.05.09 |
| JAVA STUDY - CH 1 : 자바를 시작하기 전에 / CH 2 : 변수 ( Variable ) (0) | 2024.05.01 |