1. 만약에? : 조건문 - if, switch

if문

  • if(조건)
    • 특정 조건에 따라 다른 연산을 수행하고 싶을 때 사용하는 문맥
    • 기본적인 조건에 따른 연산을 수행하기 위해 if(조건) { 연산 } 형태로 사용
    • if 의 소괄호() 안의 조건이 boolean 값 true 를 만족하면 중괄호 {} 안의 연산을 수행
  • if(조건) - else
    • if문 조건이 거짓일 경우에 따른 연산을 수행하기 위해 else { 연산 } 형태로 사용
    • if 의 소괄호() 안의 조건이 boolean 값 false 를 만족하면 else 의 중괄호 {} 안의 연산을 수행
  • if(조건)-else if(조건)
    • if문 조건이 거짓일 경우에 다시한번 다른조건으로 체크해서 참일 경우에 연산을 수행하기 위해 else if(조건) { 연산 } 형태로 사용
    • else if 의 소괄호() 안의 조건이 boolean 값 true 를 만족하면 else if 의 중괄호 {} 안의 연산을 수행
  • 중첩 if(조건)
    • 중첩해서 if 문 또는 else if문 또는 else 문 안에 if 문을 넣을 수 있음
    // 조건문으로 가위바위보 만들기
    
    import java.util.Objects;
    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    
    		System.out.print("A 입력 : ");
    		String aHand = sc.nextLine(); // A 입력
    
    		System.out.print("B 입력 : ");
    		String bHand = sc.nextLine(); // B 입력
    
    		if (Objects.equals(aHand, "가위")) { // 값을 비교하는 Obects.equals() 메서드 사용
    			if (Objects.equals(bHand, "가위")) {
    				System.out.println("A 와 B 는 비겼습니다."); // A 와 B 의 입력값을 비교해서 결과 출력
    			} else if (Objects.equals(bHand, "바위")) {
    				System.out.println("B 가 이겼습니다.");
    			} else if (Objects.equals(bHand, "보")) {
    				System.out.println("A 가 이겼습니다.");
    			} else {
    				System.out.println(" B 유저 값을 잘못 입력하셨습니다.");
    			}
    		} else if (Objects.equals(aHand, "바위")) {
    			if (Objects.equals(bHand, "가위")) {
    				System.out.println("A 가 이겼습니다.");
    			} else if (Objects.equals(bHand, "바위")) {
    				System.out.println("A 와 B 는 비겼습니다.");
    			} else if (Objects.equals(bHand, "보")) {
    				System.out.println("B 가 이겼습니다.");
    			}
    		} else if (Objects.equals(aHand, "보")) {
    			if (Objects.equals(bHand, "가위")) {
    				System.out.println("B 가 이겼습니다.");
    			} else if (Objects.equals(bHand, "바위")) {
    				System.out.println("A 가 이겼습니다.");
    			} else if (Objects.equals(bHand, "보")) {
    				System.out.println("A 와 B 는 비겼습니다.");
    			}
    		}
    
    	}
    }
    
    // 입/출력 예시
    // A 입력 : 가위
    // B 입력 : 보
    // A 가 이겼습니다.
    

 

switch(피연산자) / case(조건)

  • 형태 : switch(피연산자) { case(조건): (연산) }
  • if문보다 좀 더 가독성이 좋은 조건문 표현식
  • switch 피연산자가 case 조건을 만족하면 case: 뒤에 명시되어 있는 연산을 수행
  • case(조건): (연산) 은 여러개를 설정할 수 있음
    • 각 case 의 연산문 마지막에는 break; 를 넣어줘야함
    • break; 문 : 해당 case 의 연산문이 끝났다는것을 알려주어 switch 문을 종료시켜줌
    • 만약 case 의 연산문 마지막에 break; 를 안넣어주면, case 의 연산문이 안끝났기때문에 switch 문 블럭이 끝날때 까지 전부 실행
  • switch문 중괄호 안의 제일 마지막에 default: (연산) 을 명시해주어 case 조건들이 모두 만족하지 않을때 수행할 연산을 정해주어야 함
    • default: (연산) : 아무것도 만족하지 않을때 수행하는 것, 생략 가능

 

if문과 switch문의 차이점

  • 복합조건
    • if문은 복합조건(괄호안에 조건 여러개를 지정하여 조건문을 수행할 수 있음)을 지원
    • switch문은 피연산자 한개에 대한 조건만 지원
  • 코드중복
    • if문은 상대적으로 코드중복이 많음
    • switch문은 코드중복이 적음

2. 계속 : 반복문 - for, while, do-while

for문

  • 특정 조건에 따라 연산을 반복해서 수행하고 싶을때 사용하는 문맥
  • for (초기값; 조건문; 증가연산) { (연산) } 형태로 사용
  • 특정 조건은 초기값과 조건문을 통해서 정의
  • 반복할때마다 값을 증가 시키려면 증가연산을 정의
  • 초기값이 조건문을 만족할때까지 (연산)을 수행하면서 회차마다 증가연산을 수행

 

향상된 for문

  • 소괄호 안에 값이 3개나 들어가기 때문에 이걸 2개로 줄여주는 방법
  • 변수목록을 출력할 때 사용
  • for (변수 타입 변수 명 : 목록변수) { (연산) } 형태로 사용
  • 변수 타입 과 변수 명 은 for 문안에서 연산을 수행할 변수를 정의
  • 목록변수는 3,6,9,12,15 처럼 값여러개를 하나의 변수로 저장하고 싶을때 사용
    • 목록변수 = 배열
// 향상된 for 문
int[] numbers = {3,6,9,12,15};
for(int number: numbers) {
    System.out.print(number + " "); 
}
// 출력
3 6 9 12 15

// 만약 기존 for 문으로 구현한다면?
int[] numbers = {3,6,9,12,15};
for(int i = 0; i < numbers.length; i++) { // 배열에 .length 를 붙이면 길이값이 응답됩니다.
    System.out.println(numbers[i]);
}
// 출력
3 6 9 12 15

 

while문, do-while문

  • for 문과 동일하게 특정 조건에 따라 연산을 반복해서 수행하고 싶을때 사용하는 문맥
  • 다만, 초기값 없이 조건문만 명시하여 반복
  • while 문 : while(조건문) { (연산) }
    • 조건문을 만족해야지만 연산이 반복수행
    • 한번 반복할때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복을 중단
  • do-while 문 : do { (연산) } while(조건문)
    • 최초 1회 연산수행 후 조건문을 체크하여 더 반복할지 결정
    • 반복하게 된다면 그 이후에는 한번 반복할때마다 조건문을 체크해서 조건문이 불만족(false) 이면 반복을 중단

 

break 명령

  • break; 명령을 호출하면 가장 가까운 블럭의 for 문 또는 while 문을 중단 (또는 switch)
  • 반복문 안에서 break; 형태로 사용
// break 명령 범위

for (int i = 0; i < 10; i++) {
	System.out.println("i: " + i);
	if (i == 2) {
		break; // i 가 2일때 가장 바깥 반복문이 종료됩니다.
	}
	for (int j = 0; j < 10; j++) {
		System.out.println("j: " + j);
		if (j == 2) {
			break; // j 가 2일때 가장 안쪽 반복문이 종료됩니다.
		}
	}
}

// 출력
i: 0 // 바깥 반복문 부터 수행 시작
j: 0 // 안쪽 반복문 1회차 수행
j: 1
j: 2 // j 가 2일때 안쪽 반복문 break;
i: 1 // 바깥 반복문은 아직 break; 호출이 안됬으므로 다음 반복수행
j: 0 // 안쪽 반복문 2회차 수행
j: 1
j: 2 // j 가 2일때 안쪽 반복문 두번째 break;
i: 2 // i 가 2일때 바깥 반복문도 break; 호출되어 종료

 

continue 명령

  • for 문 또는 while 문에서 해당 순서를 패스하고 싶을때 continue 명령을 사용
  • continue; 형태로 사용
// continue 명령

int number = 0;
while(number < 3) {
		number++;
		if (number == 2) {
			continue;  // 2일때 반복 패스
		}
    System.out.println(number + "출력"); 
}

// 출력
1출력
3출력

BELATED ARTICLES

more