제어문
프로그램의 진행 흐름을 필요에 따라 변경하고 싶을 때 사용
조건문
if문
public class Ex01_if
{
public static void main(String[] args)
{
int num = 100;
if (num > 50)
{
System.out.println("num 변수의 값이 50보다 큽니다.");
}
// 한 줄만 실행하면 중괄호를 생략 가능
if (num > 50)
System.out.println("num 변수의 값이 50보다 큽니다.");
// 같은 줄에 작성 가능. 실행 문장의 끝은 세미콜론(;)으로 구분.
if (num > 50) System.out.println("num 변수의 값이 50보다 큽니다.");
// 의도치 않은 결과 : 중괄호 X
if (num < 50)
System.out.println(num); // num 변수의 값이 궁금해 출력
System.out.println("num 변수의 값이 50보다 작습니다.");
}
}
switch문
switch문을 사용하면 많은 선택자를 가지는 분기 처리를 할 수 있음
조건식의 결과와 일치하는 case문에 작성된 문장을 실행
조건식의 값이 어떤 case와도 맞지 않으면 default로 넘어가게 됨
각 case의 마지막에는 break문을 사용해서 선택한 처리만을 실행하도록 함
public class Ex02_switch
{
public static void main(String[] args)
{
int n = 4;
switch(n % 3)
{
case 1:
System.out.println("나머지가 1");
break;
case 2:
System.out.println("나머지가 2");
break;
default:
System.out.println("나머지가 0");
}
}
}
break문을 생략하면 switch문 안의 모든 case문 내용이 전부 실행됨
break는 반복문과 switch문에서만 사용할 수 있음
실행 흐름을 중단시키고 해당 중괄호 밖으로 빠져나감
public class Ex03_SwitchNoneBreak
{
public static void main(String[] args)
{
int n = 6;
switch(n % 7)
{
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("주중");
break;
case 6:
default:
System.out.println("주말");
}
}
}
조건문에 스트링 사용도 가능
public class Ex04_SwitchString
{
public static void main(String[] args)
{
String name = "홍길동";
switch(name)
{
case "홍길동":
System.out.println("제 이름은 홍길동입니다.");
break;
case "전우치":
System.out.println("제 이름은 전우치입니다.");
break;
case "손오공":
System.out.println("제 이름은 손오공입니다.");
break;
default:
System.out.println("같은 이름이 없습니다.");
}
}
}
반복문
for문을 이용한 반복
public class Ex05_for
{
public static void main(String[] args)
{
for (int i=2; i<10; i++)
{
System.out.print((2 * i) + " ");
}
System.out.println();
// 한 줄만 실행하면 중괄호를 생략 가능
for (int i=2; i<10; i++)
System.out.print((3 * i) + " ");
System.out.println();
// 같은 줄에 작성 가능. 실행 문장의 끝은 세미콜론(;)으로 구분.
// 보통 이렇게 만들지는 않습니다.
for (int i=2; i<10; i++) System.out.print((4 * i) + " ");
System.out.println();
// 의도치 않은 결과
for (int i=2; i<10; i++)
//System.out.println(i); // i 변수의 값이 궁금해 출력
System.out.print((5 * i) + " ");
System.out.println();
}
}
for문 요소의 생략·응용
public class Ex06_ForExtension
{
public static void main(String[] args)
{
// 2의 배수 출력
int i = 0;
for ( ; i<10; i++)
{
if (i % 2 == 0)
System.out.print(i + " ");
}
System.out.println();
i = 0;
for ( ; i<10; )
{
if (i % 2 == 0)
System.out.print(i + " ");
i++;
}
System.out.println();
for (int j=0; j<10; j=j+2)
{
System.out.print(j + " ");
}
System.out.println();
}
}
while문을 이용한 반복
while문은 반복의 횟수보다는 처리 조건이 정해져 있을 때 사용
for문은 반복의 횟수가 정해져 있을 때 사용
public class Ex07_while
{
public static void main(String[] args)
{
int num = 0;
int count = 0;
while((num++) < 100)
{
// if(((num % 5) != 0) || ((num % 7) != 0))
// continue; // 5와 7의 배수 아니라면 나머지 건너띄고 위로 이동
if( (num % 5) != 0 )
continue;
if( (num % 7) != 0 )
continue;
count++; // 5와 7의 배수인 경우에만 실행
System.out.println(num); // 5와 7의 배수인 경우에만 실행
}
System.out.println("count: " + count);
}
}
do~while문을 이용한 반복
do~while문도 while문과 똑같이 반복 처리를 실행하는 제어문
while문은 먼저 조건식을 평가하기 때문에, 첫 번째 반복을 돌 때 조건식의 결과가 false이면 while문 중괄호 안의 문장들이 한 번도 수행되지 않을 수 있음
그에 반해 do~while문은 조건식을 아래쪽에 쓰기 때문에 최소 한 번은 중괄호 안의 문장들이 실행됨
do
{
문장;
} while(조건문);
public class Ex08_DoWhile
{
public static void main(String[] args)
{
int num = 0;
int count = 0;
do
{
num++;
if( (num % 5) != 0 )
continue;
if( (num % 7) != 0 )
continue;
count++; // 5와 7의 배수인 경우에만 실행
System.out.println(num); // 5와 7의 배수인 경우에만 실행
} while(num < 100);
System.out.println("count: " + count);
}
}
레이블을 이용한 중첩된 반복문의 일괄 중지
여러 개의 중첩된 반복문에서는 코드 실행 중간에 break문을 만나면 가장 가까운 반복문을 빠져나가게 됨
중첩된 반복문의 안쪽 반복문에서 특정 조건을 충족하면 바깐쪽의 모든 반복문까지 중지하고 그다음 코드를 실행하고 싶은 경우가 있음 → 이럴 때 레이블을 이용한 반복문의 중지 기능을 사용
반복문에 레이블을 지정하고 break에 레이블 이름까지 같이 지정
public class Ex09_BreakLabel
{
public static void main(String[] args)
{
int sum = 0;
myExit: while (true)
{
for (int i=0; i<100; i++)
{
sum = sum + i;
if (sum > 2000)
{
System.out.printf("%d : %d\n", i, sum);
break myExit;
}
}
}
}
}
'JAVA > 이재환의 자바 프로그래밍 입문' 카테고리의 다른 글
[Java] Ch.8 계산기 만들기 (0) | 2023.10.16 |
---|---|
[Java] Ch.7 메서드와 변수의 사용 가능 범위 (0) | 2023.10.16 |
[Java] Ch.5 콘솔 출력과 입력 (1) | 2023.10.13 |
[Java] Ch. 4 연산자 (1) | 2023.10.13 |
[Java] Ch.3 변수, 상수, 자료형의 형변환 (0) | 2023.10.13 |