자바 제어문
■ 조건 제어문
if / if-else : 조건에 따른 단순 분기처리
if - else if / switch : 조건에 따른 다중 분기 처리
if / if-else if / if-else : Ture/False를 리턴하는 조건식 필요
switch : case에 해당하는 값 필요
if 문
if(Expression){
statement1;
}
statement2;
if문 내 조건을 만족하면 statement1 수행 후 다음 구문으로 넘어감.
조건을 만족하지 않으면 statement2 수행
if-else문
if(Expression){
statement1;
}
else{
statement2;
}
statement3;
if문 내 조건식이 True라면 statement1 수행 후 statement3 수행
False라면 statement2 수행 후 statement3 수행
if-else if문
if(Expression1){
statement1;
}
else if(Expression2){
statement2;
}
else{
statement3;
}
statement4;
if문 내 조건식1이 Ture라면 statement1 수행 후 statement4 수행
조건식1이 False이고 조건식2가 True라면 statement2 수행 후 statement4 수행
조건식1,2가 모두 False라면 statement3 수행 후 statement4 수행
switch문
switch(Expression){
case value1:
statement1;
break;
case value2:
statement2;
break;
default:
statement3;
break;
}
statement4;
switch문의 Expression의 결과는 char, byte, short, int형만 가능
Expression의 결과에 해당하는 value의 case문으로 이동 후 statement 수행
break가 있다면 switch문을 빠져나간 후 statement4 수행
결과와 일치하는 value가 없다면 default로 이동함.
만약 break문이 없다면 다음 case문의 value가 일치하지 않더라도 이어서 수행하게 됨.
ex1) case value1의 내부에 break문이 없을 때,
switch(Expression){
case value1:
statement1;
case value2:
statement2;
break;
default:
statement3;
break;
}
statement4;
Expression의 결괏값이 value1이라면 statement1, statement2 수행 후 break를 만나 statement4 수행
import java.util.Scanner;
public class SwitchTest{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
switch(month){
case 3:
case 4:
case 5:
System.out.println(month + "월은 봄입니다.");
break;
case 6:
case 7:
case 8:
System.out.println(month + "월은 여름입니다.");
break;
case 9:
case 10:
case 11:
System.out.println(month + "월은 가을입니다.");
break;
case 12:
case 1:
case 2:
System.out.println(month + "월은 겨울입니다.");
break;
default:
System.out.println("1~12 사이의 숫자만 입력하세요.");
break;
}
sc.close();
}
}
입력되는 숫자가 어느 계절에 해당하는 월인지 출력하는 코드
만약 9를 입력하면 11에 해당하는 case문을 수행하고 종료하게 된다.
1~12를 벗어나는 수를 입력하면 defalut 내부의 코드를 수행하게 된다.
■ 반복 제어문
- for / while : 조건에 따라 특정 문장이 수행되지 않을 수 있음
- do-while : 무조건 한번은 수행됨.
반복 제어문에 사용되는 조건식의 연산 결과는 True/False 이어야 함.
for문
for(초기식; 조건식; 증감식){
statement1;
}
statement2;
- 초기식 : 반복횟수 제어, 한번만 실행됨.
- 조건식 : 조건식이 true일 동안 반복 실행. false일 경우 종료
- 증감식 : 조건식이 무한반복되지 않도록 함. / statement1이 수행된 후 증감식 실행
for 블록 내 선언된 변수는 for블록 내부에서만 사용 가능함.
//오류 구문
public static void main(string args[]){
for(int i=0; i<10; i++){
statement1;
int i = 20; // for문 내에 이미 i가 선언되어 있어 같은 이름으로 선언 불가능(error)
}
System.out.println("최종 i값 : " +i); // for문 내 선언된 변수는 외부에서 호출할 수 없음.
}
while문
while(조건식){
statement1;
}
statement2;
조건식이 True일 동안 statement1을 반복 수행함.
무한루프에 빠지지 않도록 내부에 증감식 또는 탈출구문(break) 필요
조건식이 false가 되면 statement2 수행
// while문 활용 예
// 1~100까지 짝수의 합을 출력하는 프로그램
public static void main(String args[]){
int i = 1, sum = 0;
while(i<=100){
if((i % 2) == 0) sum += i; // i가 짝수일 경우 sum에 i를 더하여 sum에 할당.
i++; // 무한루프에 빠지지 않도록 증감식 설정.
}
System.out.println("1~100사이 짝수의 합: " + sum);
}
do-while문
while문과 비슷하나 반복문을 제어하는 식이 반복 블록 다음에 있음.
표현식이 false라도 최소한 한번은 실행함.
while문 뒤에 세미콜론(;) 필요.
do{
statement1;
}while(조건식);
statement2;
■ 이동 제어문
- break : 반복문에서 쓰이면 반복문 자체를 종료, switch문에서 쓰일 경우 switch블록을 종료
- continue : 반복문(for, while)에서 현재단계의 수행을 생략하고 다음 반복구문으로 넘어감
- return 메서드의 수행을 종료하고 메서드가 호출된 곳으로 제어를 이동시킴.
Label을 사용한 break와 continue
Label이 정의된 영역만큼 break와 continue가 적용됨.
- break
outer: for(int i=0; i<4; i++){
for(int j=0; j<3; j++){
if(i==2) break outer; //outer 레이블이 붙은 for문을 종료함.
System.out.println(i +" "+ j);
}
}
Label없이 break문만 쓰였을 경우 : i=2일 때 j가 선언되어있는 반복문을 탈출하고 i=3인 for문을 마저 실행함.
- continue
outer: for(int i=0; i<4; i++){
for(int j=0; j<3; j++){
if(i==2) continue outer; //outer 레이블이 붙은 for문의 다음 반복을 수행함
System.out.println(i +" "+ j);
}
}
∴ Label로 인해 프로그램이 복잡해질 우려가 있으므로 사용을 권장하지 않음
[참고] : SWExpertAcademy
'Etc.. > SWExpertAcademy' 카테고리의 다른 글
[Java Programming] 객체지향 핵심 원리(2) (0) | 2021.07.13 |
---|---|
[Java Programming] 객체지향 핵심 원리(1) (0) | 2021.07.12 |
[Java Programming] 자바언어의 구조와 기본문법 (3) (0) | 2021.07.05 |
[Java Programming] 자바언어의 구조와 기본문법 (2) (0) | 2021.07.05 |
[Java Programming] 자바언어의 구조와 기본문법 (1) (0) | 2021.07.05 |