본문 바로가기
JAVA

[Java] 선택문, 반복문

by 햄과함께 2020. 12. 10.
320x100

선택문

조건을 걸고 해당 조건에서만 실행되는 로직이 있는 경우 사용한다.


if-else

if(조건문 1) {
  로직 A
} else if(조건문 2) {
  로직 B
} else if(조건문 3) {
  로직 C
} else {
  로직 D
}

if문은 위와 같이 사용한다.

조건은 위에서부터 아래로 차례대로 판단한다.

조건문 1을 만족하면 로직 A 실행.

조건문 1을 만족하지 않고 조건문 2를 만족하면 로직 B 실행.

조건문 1,2를 만족하지 않고 조건문 3을 만족하면 로직 C 실행.

조건문 1,2,3을 만족하지 않은 경우 로직 D 실행.

 

예시

public class MyClass {
    public static void main(String args[]) {
      int age = 20;
      if(age >= 19) {
          System.out.println("adult");
      } else {
          System.out.println("child");
      }
    }
}

// adult

age가 19이상이면 adult, 아니면 child를 출력한다.

public class MyClass {
    public static void main(String args[]) {
      int age = 3;
      if(age >= 19) {
          System.out.println("adult");
      } else if(age >= 5) {
          System.out.println("child");
      } else {
          System.out.println("baby");
      }
    }
}

// baby

조건문을 하나 추가하는 경우  else if  를 사용할 수 있다.

age가 19이상이면 adult. 19이상이 아니고 5이상인 경우 chile. 모든 경우에 속하지 않는 경우 baby 출력.


switch-case

switch(변수 or 조건문) {
  case 값1: 로직A; break;
  case 값2: 로직B;
  default: 로직C;
}

if-else 문에서는 조건문을 직접 설정할 수 있어서 특정 변수의 값의 범위를 지정할수도 있지만 switch문은 그렇게 할 수 없다.

switch문에서는 변수나 조건문의 결과가 case 문에서 지정한 값과 같은지 동등비교만 할 수 있다.

break 키워드는 로직 실행을 종료할 수 있다. 로직은 switch문이 종료되거나 break 키워드를 만날때까지 실행된다.

 

if-else 문은 위에서부터 차례대로 비교하면서 조건문을 비교하지만 switch문은 변수나 조건문의 결과값으로 case 문을 바로 찾아간다.

 

위와 같은 경우는 변수가

값1과 같다면 로직A를 실행. break 문을 만나 switch 문이 종료된다.

값2와 같다면 로직B, 로직C를 실행. switch 문이 종료된다.

값1, 2와 같지 않다면 default 문을 실행, 로직C 실행 후 switch문이 종료된다.

 

예시

public class MyClass {
    public static void main(String args[]) {
      int coupon = 3;
      switch(coupon) {
          case 1: System.out.println("사과"); break;
          case 2: System.out.println("바나나"); break;
          case 3: System.out.println("딸기"); break;
          default: System.out.println("WRONG INPUT");
      }
    }
}

// 딸기

쿠폰 값에 따라, 1이면 "사과", 2면 "바나나", 3이면 "딸기", 이외의 값이면 "WRONT INPUT"을 출력한다.

public class MyClass {
    public static void main(String args[]) {
      int coupon = 2;
      switch(coupon) {
          case 1: System.out.println("사과");
          case 2: System.out.println("바나나");
          case 3: System.out.println("딸기"); break;
          default: System.out.println("WRONG INPUT");
      }
    }
}

// 바나나
// 딸기

쿠폰 값에 따라 1이면 "사과","바나나","딸기". 2이면 "바나나", "딸기". 3이면 "딸기". 이 외의 값이라면 "WRONG INPUT"을 출력한다.


반복문

로직을 조건문에 맞게 반복해주는 것.


for

for(statement1 ; statement2 ; statement 3) {
  로직
}

statement 1 : 로직이 실행되기 전 한 번 실행된다.

statement 2 : 로직 실행되는 조건

statement 3 : 로직이 실행되고 매번 실행된다.

 

예시

int[] numbers = {1, 2, 3, 4};
for(int i=0; i<4; i++){
    System.out.println(numbers[i]);
}

for 문 안에서 변수 i로 인덱스로 0~3까지 반복하면서 numbers 배열 값을 출력한다.


for-each

for(타입 변수명: 배열) {
  로직
}

배열을 인덱스가 아닌 요소로 접근가능하다.

 

예시

int[] numbers = {1, 2, 3, 4};
for(int number : numbers){
    System.out.println(number);
}

numbers 배열의 요소를 모두 출력한다.


while

while(조건문) {
  로직   
}

조건문 판단 후 조건문이 true인 경우 로직을 실행한다.

 

예시

int i = 0;
while(i < 3) {
  i++;
  if(i==2) continue;
  System.out.println(i);
}

// 1
// 3

i가 3 미만인 경우 while 문 내부 로직을 실행한다.

만약 i가 2인 경우  continue 키워드를 만나 아래 로직을 실행하지 않고 while문 조건문부터 다시 시작한다.

int i=0;
while(i < 0) {
  i++;
  System.out.println(i);
}

i는 0 이고 이는 while 조건문에 부합하지 않으므로 아무것도 출력하지 않는다.


do-while

do{
  로직
} while(조건문);

로직을 먼저 실행 후 조건문을 판단 한다. 조건문이 true인 경우 do 블럭을 실행한다.

따라서 조건문과 상관없이 로직은 반드시 한 번 이상 실행된다.

do {
  i++;
  System.out.println(i);
} while(i < 3);

// 1
// 2
// 3

i를 출력 후, 조건문이 true인지 판단한다.

int i =0;
do {
  i++;
  System.out.println(i);
} while(i < 0);

// 1

i 는 0이여서 while문 조건에 부합하지 않지만 로직을 먼저 실행하기 때문에 1을 출력한다.

320x100

'JAVA' 카테고리의 다른 글

[Java] 이진검색트리(BST) 구현  (0) 2020.12.19
[Java] 클래스, 객체  (0) 2020.12.19
[Java] 연결리스트(Linked List), Stack, Queue 구현  (0) 2020.12.12
[Java] Github API 통신  (0) 2020.12.11
[Java] JUnit5 테스트  (1) 2020.12.10

댓글