조건문과 반복문
실행 흐름을 제어할 수 있는 문장, 프로그램의 실행 흐름을 바꿔준다는 뜻으로 '제어문' 이라고 한다.
조건문
조건 만족시에 괄호 {} 안의 내용을 수행한다. (0 ~ 1회)
- 조건식과 문장을 포함하는 블럭 { } 으로 구성된다.
- 조건신의 연산결과에 따라 실행할 문장이 달라져 프로그램의 실행흐름을 변경할 수 있다.
- 조건문에는 if문, switch문이 있다.
블럭 { }
- 여러 문장을 하나로 묶어준다.
- 블록 안의 문장들은 가독성을 위해 tab을 눌러 들여쓰기를 한다.
- if문에 속한 문장이 하나라면 블럭을 생략할 수 있다.
if문
가장 기본적인 조건문이다.
- 조건식의 결과는 참과 거짓 두가지이다.
- 조건식의 결과가 true(참)일때 괄호{ } 안의 문장들을 수행한다.
if(조건식){
.....; // 조건식이 ture(참)일때 수행될 문장들을 적는다.
}
// 조건식이 false(거짓)일 때 블록안의 문장은 실행되지 않는다.
if-else문
조건식이 true(참)일 때와 false(거짓)일 때로 나눠서 처리하는 문장이다.
if(조건식){
.....; // 조건식이 ture(참)일때 수행될 문장들을 적는다.
}else{
.....; // 조건식이 false(거짓)일 때 수행될 문장들을 적는다.
}
if-else-if문
여러개의 조건식을 포함하며 그중 하나의 조건식이 만족하면 블록 안의 문장을 실행한 후 if-else-if문을 빠져나온다.
if(조건식1){
.....; // 조건식1이 ture(참)일 때 수행될 문장들을 적는다.
}else if(조건식2){
.....; // 조건식2이 ture(참)일 때 수행될 문장들을 적는다.
}else{
.....; // 어느 조건식도 true(참)이 아닐때 수행될 문장들을 적는다.(생략이 가능하다)
}
중첩 if문
if문의 블록 안에 다른 if문이나 제어문을 넣을 수 있다.
if(조건식1){
.....; // 조건식1이 ture(참)일때 수행될 문장들을 적는다.
if(조건식2){
.....; // 조건식1과 조건식2가 모두 ture(참)일때 수행될 문장들을 적는다.
}else{
.....; // 조건식1이 ture(참)이고 조건식2가 false(거짓)일 때 수행될 문장들을 적는다.
}
}else{
.....; // 조건식1이 false(거짓)일 때 수행될 문장들을 적는다.
}
- 블럭 { }을 생략하고 작성하면 else는 가까운 if문과 결합하여 구성된다.
switch문
경우의 수가 많을 때 사용되는 조건문으로 조건 변수가 어떤 값을 갖느냐에 따라 실행되는 문장이 달라진다.
switch(변수){
case 값1 :
.....; // 변수의 결과가 값1과 같은 경우 실행되는 문장을 적는다.
break; // switch문 전체에서 빠져나온다.
case 갑n :
.....; // 변수의 결과가 값n과 같은 경우 실행되는 문장을 적는다.
break; // switch문 전체에서 빠져나온다.
default :
.....; // 변수의 결과값과 일치하는 값이 없을 때 수행되는 문장
// 생략이 가능하다.
}
- case문에서 break문을 만나지 못한다면 break를 만날 때까지 계속 문장을 수행한다. 만나지 못한다면 switch문을 끝까지 수행한다.
- 변수의 값은 true나 false가 아니기 때문에 여러 경우의 수를 쉽게 처리 가능하다.
- default는 생략이 가능하다
switch문의 제약조건
- 조건식의 결과는 정수 또는 문자열타입 변수를 산출하는 연산식이여야한다.(문자열은 jdk 1.7부터 지원)
- case문의 값은 정수인 상수(문자), 변수, 문자열만이 가능하며 실수는 불가하다.
- case문의 값은 중복되지 않는 값을 가져야 한다
임의의 정수를 활용한 예제 : 1 ~ 3사이의 난수 얻기
- Math.random() : 0.0이상 1.0 미만 사이의 임의의 double 값을 반환하는 메소드이다.
- 임의의 정수는 난수를 의미한다.
Math.random() 메소드를 활용한다.
0.0 <= Math.random() < 1.0 // 0.0 ~ 0.9999....
1. 각변에 3을 곱한다.
0.0 * 3 <= Math.random() < 1.0 * 3 // 0.0 ~ 2.99....
2. 각 변을 int형으로 형변환 한다.
(int)0.0 <= (int)(Math.random()*3) < (int)3.0 // 0 ~ 2
3. 각 변에 1을 더한다.
0 + 1 <= (int)(Math.random()*3) < 3 + 1 // 1 ~ 3
반복문
조건을 만족하는 동안 괄호 { } 안의 내용을 수행한다. (0 ~ n번)
- 어떤 작업이 반복적으로 수행될 때 사용한다.
- 조건문에는 for문, while문, do-while문이 있다.
- for문은 반복 횟수를 알고 있을 때 사용하고 while문은 반복횟수를 모를 때 사용한다.
for문
- 조건식을 만족하는 동안 블록{ }안의 문장을 반복한다..
- 변수 초기화는 실행시 한번만 발생한다.
- 조건식의 결과가 true(참)일 때 블록{ }안의 문장을 수행한다.
- 문장안의 내용이 전부 실행되었다면 증감식을 실행한다.
- 증감식 실행 후 다시 조건식의 결과를 다시 판별한다.
- 조건식을 생략하면 true로 간주되어 무한루프문이 된다.
중첩 for문
- for문 내에 또 다른 for문을 포함시킬수 있다.
- 보통 2중 까지만 사용한다.
while문
- 조건을 만족시키는 동안 블럭({})을 반복한다.
while(조건식) {
// 조건식의 연산결과가 true(참)인 동안, 반복될 문장들을 적는다.
}
- 처음부터 false인 경우 한번도 수행되지 않는다.
- while과 for문은 서로 변경이 가능하다.
do-while문
블럭{}을 최소한 한 번 이상 반복한다.
- 사용자의 입력을 받을 때 유용하다.
- 코드 중복의 최소화할 수 있다.
do{
// 조건식의 연산 결과가 참일 때 수행될 문장들을 적는다.
// 처음 한 번은 무조건 실행된다.
} while(조건문);
break문
break문은 자신이 포함된 하나의 반복문을 벗어난다.
while(true) { //while문의 무한 반복문은 ture를 생략할 수 없다.(for문은 가능 for(;;))
if(조건식)
break; //if문의 조건식이 참이될 때 실행되어 반복문에서 벗어난다.
//실행될 문장
}
continue문
블록 내부에서 continue문이 실행되면 for문의 증감식 또는 while, do-while문의 조건식으로 이동한다.
- 다음 반복으로 넘어간다는 것을 의미한다.
- 전체 반복 중에서 특정 조건에 충족 시 반복을 건너뛸 때 유용하다.
- 반복문 내에서만 사용될 수 있다.
for (초기화; 조건식; 증감식) {
if(조건식)
continue; //if문의 조건식이 true(참)이될 때 실행되어 반복문의 끝으로 이동한다.
// 실행될 문장
// 반복문의 끝으로 간다는 것은 실행될 문장을 건너 뛰어 다음 반복으로 넘어감을 의미한다.
}
이름이 붙은 반복문
반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
- 여러개의 반복문이 중첩된 경우 사용한다.
- 하나 이상의 반복문을 벗어나거나 반복을 건너뛸 수 있다.
반복문 이름 : for (초기화; 조건식; 증감식) {
for (초기화; 조건식; 증감식) {
if(조건식)
break 반복문 이름; //실행될 문장2 뒤로 간다.
// break; 하나의 반복문만을 벗어난다. 실행될 문장1 뒤로 간다.
// continue 반복문 이름;
// continue;
// 실행될 문장1
}
// 실행될 문장2
}
'Java' 카테고리의 다른 글
[JAVA]객체 지향 프로그래밍(Object Oriented Programming) (0) | 2023.08.30 |
---|---|
[JAVA] 배열(Array) (0) | 2023.08.16 |
[JAVA] 연산자(operator) (0) | 2023.08.05 |
[JAVA] 형변환(casting) (0) | 2023.08.05 |
[JAVA] 자바의 리터럴(literal)? (0) | 2023.08.05 |