05-1 조건문
05-1.A 조건문 if, if..else if, if... else if... else
조건문이란, 어떤 특정한 조건이 '참' 이여야 특정한 문장들이 실행되게 하는 제어문입니다.
if 조건문에 들어가는 조건은 항상 boolean값이여야합니다.
if ( condition ){
System.out.println("if문 실행.");
}
하지만 현실 세계에서는 특정한 조건이 참, 거짓으로만 나누기에는 한계가 있습니다. 따라서 조건이 여러 가지일 경우, 이에 대응하는 조건문을 작성할 필요가 있습니다.
int condition = 0;
if ( condition == 1 ){
System.out.println("첫 번째 조건이 충족되었습니다.");
// condition == 1일 경우 실행할 문장..
}else if ( condition == 2){
System.out.println("두 번째 조건이 충족되었습니다.");
// condition == 2일 경우 실행할 문장..
}else if ( condition == 3){
System.out.println("세 번째 조건이 충족되었습니다.");
// condition == 3일 경우 실행할 문장..
}else{
System.out.println("어떠한 조건이 충족되지 않았습니다.");
// 위 조건들이 맞지 않을 경우 실행할 문장..
}
조건문 안에 조건문을 구현할 수 있습니다. 이를 중첩 조건문이라고 합니다.
int num = 7;
if(num>0){
System.out.println("num은 양수입니다.");
if(isPrime(num)){//소수인지 아닌지를 반환하는 함수. 구현 방법은 나중에 포스팅 하겠습니다.
System.out.println("num은 소수입니다.");
}
}else if (num == 0){
System.out.println("num은 0입니다.");
}else{
System.out.println("num은 음수입니다.");
}
반복문을 하나만 쓰는것(if{}else if{}else{})과 여러 반복문의 나열 (if{} if{} if{}...)을 어려워하시는 분들이 계십니다. 이는 한번 혼자 생각하면서 어떤것이 더 좋은지 직접 코드를 작성하면서 익혀야 할 부분입니다. 그래도 제가 팁을 드리자면, 쉽게 생각하면 포함관계를 생각해보시면 됩니다.
예를 들어 남성과 여성 은 사람의 부분집합이고 서로 겹치지 않습니다. 사람이라는 공통된 부분에서 서로 겹치지 않기에 이는 if~else를 쓰는 것이 적절합니다.
다른 예시로는 시계의 진위 여부와 색깔을 구분하는 것입니다. 이 둘은 남성과 여성을 구분하는 것과는 다르게 겹치는 부분이 있습니다. 따라서 이는 if문을 두 번 쓰시면 됩니다. (if~else{} if~else if~...~else{})
중첩 조건문을 모르겠으면 수의 체계를 생각해 보시길 바랍니다. 수의 체계를 인터넷에 검색해보시면 어떤 느낌인지 확실하게 느낄 수 있으실겁니다.
출처 : librewiki.net
//이해를 돕기위한 코드입니다. 실제로 작성시 조건의 형태가 다릅니다.
if(복소수) {
if(실수) {
if(유리수) {
if(정수) {
if(양의정수) {
//자연수
}else if(음의정수) {
//음의정수
}else {
//0
}
}else {
//정수가 아닌 유리수
}
}else {
//무리수
}
}else {
//허수
}
}else {
//복소수가 아님.
}
05-1.B 조건문 switch (case, default)
또다른 조건문으로는 switch가 있습니다. 구현할 조건문이 스위치같은 역할을 한다면 switch 구문을 이용하면 편할 수 있습니다.
int num = 2;
switch(num){// 괄호() 안에 스위치 역할을 하는 변수 입력
case 1:
// case가 1일 경우 실행할 명령어
System.out.println("case 1");
case 2:
// case가 2일 경우 실행할 명령어
System.out.println("case 2");
case 3:
// case가 3일 경우 실행할 명령어
System.out.println("case 3");
default:
// case가 1,2,3이 아닐 경우 실행할 명령어
System.out.println("default case");
}
여기서 조심해야할 것은 코드를 위 코드처럼 짜는 겁니다. 저 코드는 사실 불안정합니다.
만약 num이 1이였다면, case 1에 해당하는 코드를 실행시킬것입니다. 그리고, 이 switch 구문은 case 2를 실행시킵니다. 그 이유는 switch는 if문과는 다르게 조건에 맞는 case ~:으로 간 후, 그 밑에있는 모든 문장을 실행시킵니다.
예를 들어 위 코드에서 num이 1이면, case 1에서 시작해서 그 아래있는 case2, case3, default까지 실행시킵니다.
num이 3이라면 case 3과 default를 실행시키겠지요. 따라서 break;를 써줘야합니다.
int num = 1;
switch(num){// 괄호() 안에 스위치 역할을 하는 변수 입력
case 1:
// case가 1일 경우 실행할 명령어
System.out.println("case 1");
break;
case 2:
// case가 2일 경우 실행할 명령어
System.out.println("case 2");
break;
case 3:
// case가 3일 경우 실행할 명령어
System.out.println("case 3");
break;
default:
// case가 1,2,3이 아닐 경우 실행할 명령어
System.out.println("default case");
break;
}
05-2 반복문
반복문이란, 특정한 조건이 만족할 때 특정한 문장들이 실행되게 하는 제어문입니다.
반복문에는 for 반복문과 while, do-while 반복문이 있습니다.
for 반복문
for() 안에는 최초실행문, 조건실행, 반복자가 있습니다. 이 세가지는 세미콜론 ";"으로 구분합니다.
for(초기화 ; 조건 ; 반복자){
//반복될 코드
}
다음은 보통 많이 쓰는 코드 형식입니다.
int loop = 10;
int i = 0;
for(i = 0 ; i < loop ; i++){
System.out.println("현재 i의 상태 : "+i);
}
for(int j = loop ; j > 0 ; j--){
//for문 안에서 선언된 변수는 for문 안에서만 존재할 수 있습니다.
System.out.println("현재 j의 상태 : "+j);
}
보통 반복문에 이용되는 변수를 i혹은 j(k, l, o 등등..)으로 선언합니다. 이러한 변수는 내가 원하는만큼 반복할 수 있게 해줍니다.
while문
while문은 조건문이 일치할때 while구문을 실행합니다. 여기서 while구문이란, while옆에 붙어있는 { }말합니다.
double num = 12345;
int times = 0;
System.out.println("최소 num 상태 : "+num);
while(num < 2){
num /= 2;
times ++;
System.out.printn("현재 num 상태 : "+num);
}
System.out.println("최종 num 상태 : "+num);
System.out.println("연산(반복) 횟수 : "+times);
while문으로 for문과 비슷하게도 만들 수 있습니다.
int i = 0;
int loop = 10;
while(i < loop){
System.out.println("현재 i 상태 : "+i);
i++;
}
do-while문
do~while문은 일단 조건을 무시하고 while구문을 실행시키고 봅니다. 쉽게 생각해서 while문에서 while구문이 while문 위에 하나 더 있다고 생각하시면 됩니다.
do{
//something to do
}while(조건);
//아래 코드와 똑 같습니다.
//something to do
while(조건){
//something to do
}
윈초
2020.03.16어ㅓㅓㅓㅓ...... 네 알겠습니다?