
제어문에는 조건문과 반복문이 있습니다.
조건문
조건문 이란?
주어진 조건에 따라 다른 실행이 이루어 지도록 구현하는 것입니다.
'나이가 8살 이상이면 학교를 간다 그렇지 않으면 가지 않는다' 를 구현 한다면
만약에 (나이가 8살 이상이면){
학교를 간다.
}
그렇지 않으면 {
학교를 가지 않는다.
}
IF 문
숫자의 유효범위를 확인하는 용도로 웹개발에서 많이 사용됩니다.
예시
// 영문자 (대문자와 소문자 존재)를 입력받을 경우
char alpha = sc.next().charAt(0);
if (!(alpha >= 'a' && alpha <= 'z') || !(alpha >= 'A' && alpha <= 'Z')) {
System.out.println("Alphabet - Not Valid Data");
}
alpha = sc.next().toLowerCase().charAt(0); //코드 길어지니까 다 소문자로 바꿔서 영문인지 판별한다.
if (!(alpha >= 'a' && alpha <= 'z')) {
System.out.println("Alphabet - Not Valid Data");
}
if문을 사용하여 프로그램 분기가 많이 일어나는 것은 별로 좋지 않습니다.
그럼 어떻게 해야 할까요?
-> if 대신에 XOR이나 비트 연산자를 쓰면 됩니다.
if 문 문법
if(조건식){
수행문; // 조건식이 '참'인 경우에(조건에 맞는 경우) 수행문이 수행됨
} // 조건식이 '참'이 아니면(조건에 맞지 않는 경우) 수행문이 수행되지 않음
if - else 문 문법
if( 조건식) {
수행문1; // 조건식이 '참'인 경우에 수행됨
}
else{
수행문2; // 조건식이 '참'이 아닌 경우에 수행됨
}
if-else if-else 문
하나의 상황에 대한 조건이 여러개로 나뉘고 각 조건에 다른 수행이 이루어져야 할 경우 사용합니다.
if(조건식1){
수행문1; // 조건식1이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else if(조건식2){
수행문2; // 조건식2이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else if(조건식3){
수행문3; // 조건식3이 '참'인 경우 수행하고 전체 조건문을 빠져나감
}
else{
수행문4; // 위 조건이 모두 해당되지 않는 경우 수행됨 (디폴트 조건)
}
수행문5; // if-else if-else 문이 끝나면 수행됨
가령 조건식2가 만족되면 수행문2 -> 수행문5 순으로 수행됨
조건 식이 참일 경우 다른 조건식을 탐색하지 않습니다.
if-else if 문과 if - if 문의 차이점
if-else if 문의 경우, 하나의 조건이 만족되면 나머지 else if 부분은 수행되지 않습니다. 조건식을 탐색하지도 않습니다.
if - if로 사용하게 되면 각각 다른 조건문으로 해석되어 각각 수행하게 됩니다.( 하나의 조건을 만족하더라도 다른 if문 또한 탐색합니다.)
switch - case 문
- if - else if - else 문을 사용할 때 복잡하고 번거로운 부분을 가독성 좋게 구현
- 비교 조건이 특정 값이나 문자열인 경우 사용
- break 문을 사용하여 각 조건이 만족되면 switch 블럭을 빠져나오도록 함
- 자바 14부터 좀 더 간결해진 표현식이 지원 됨 ( break 사용하지 않음 )
예제
package ch16;
import java.util.Scanner;
public class SwitchCaseTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int month=scanner.nextInt();
int day;
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 4: case 6: case 9: case 11:
day = 30;
break;
case 2:
day = 28;
break;
default:
day = 0;
System.out.println("존재하지 않는 달 입니다.");
}
System.out.println(month + "월은 " + day + "일입니다.");
}
}
결과
10
10월은 31일입니다.
반복문
반복문이란 주어진 조건에 맞는 동안(true) 지정된 수행문을 반복적으로 수행하는 제어문 입니다.
조건에 맞지 않으면 반복하던 수행을 멈추게 됩니다.
while 문
수행문을 수행하기 전, 조건을 체크하고 그 조건의 결과가 true인 동안 반복 수행합니다.

조건식에 true가 들어가면 무한반복 됩니다.
예제
package ch17;
public class WhileTest {
public static void main(String[] args) {
int num=1;
int sum=0;
while ( num <=10 ) {
sum += num;
num ++;
}
System.out.println(sum);
System.out.println(num);
}
}
결과
55
11
do-while문
while문은 조건을 먼저 체크하고 반복수행이 됩니다.
do-while문은 조건과 상관없이 수행을 한번 하고 나서 조건을 체크 합니다.

for문
제일 많이 사용되는 반복문입니다.
for문에는 초기화식, 조건식, 증감식이 있고 수행순서는 다음과 같습니다.

초기화식, 증감식에 문장이 두개가 들어갈 수도있다. 그러나 너무 많으면 가독성이 좋지 않으니, 최대한 가독성을 고려해서 코드를 짜는 것이 좋습니다.
예제
package ch19;
public class ForTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 1;
int sum = 0;
for ( int i=0; i < 10; i++, count++) {
sum += count;
}
System.out.println(sum);
int num=1;
int total=0;
while( num <= 10 ) {
total +=num;
num++;
}
System.out.println(total);
}
}
결과
55
55
for문의 문장들은 생략가능 합니다.
1. 초기화식 생략 : 이미 이전에 값이 초기화 되어 for 내부에서 값을 지정할 필요가 없는 경우

2. 조건식 생략 : 반복 수행에 대한 조건이 수행문 내부에 있는 경우

3. 증감식 생략 : 증감식에 대한 연산이 복잡하거나 다른 변수의 연산 결과 값에 결정되는 경우

4. 무한 반복

중첩 반복문
중첩 반복문이란 반복문 내부에 또 다른 반복문이 있는 경우입니다.
너무 많이 중첩되면 수행속도에 문제가 생깁니다. 이중 중첩까지만 많이 사용됩니다.
break, continue문
break 는 감싸고 있는 제어문의 블록을 빠져나오는 기능입니다.
여러 반복문이 중첩되어 있는 경우엔 break 문이 포함되어 있는 가장 작은 단위의 반복문만 빠져나옵니다.
continue는 반복문 내부에서 조건문(if)와 같이 사용하며, 조건이 맞는 경우 이후 반복문 블럭 내부의 다른 수행문들을 수행하지 않습니다.
'Java' 카테고리의 다른 글
| [Java] 참조 자료형 변수 (0) | 2022.09.21 |
|---|---|
| [Java] 객체 구현 (0) | 2022.09.21 |
| [Java] 자바의 연산자들 (0) | 2022.09.19 |
| [Java] 자바프로그래밍이란 (0) | 2022.09.19 |
| [Java] 자료형과 변수 (1) | 2022.09.19 |