상세 컨텐츠

본문 제목

[Java] 조건문과 반복문 1️⃣

Backend/Java

by hyeminyy 2023. 11. 19. 02:46

본문

728x90

java의 정석을 보고 공부했습니다 !

if, switch

조건문은 조건식과 문장을 포함하는 블럭 {}으로 구성되어 있으며, 조건식의 연산결과에 따라 실행할 문장이 달라져서 프로그램의 실행흐름을 변경할 수 있다.

 

if문

  - '조건식'과 '{}'로 이루어져 있다.

  - 만일 (if) 조건식이 참(true)이면 {} 안의 문장들을 수행하라 !

if(조건식){
	//조건이 참(true)일 때 수행될 문장들을 적는다.
}

 

if (score > 60){
	System.out.println("합격!");
}
	System.out.println("불합격!");

조건식 'score > 60'이 참(true)이면 {} 안의 문장이 수행되어 화면에 '합격!' 라고 출력되고,

거짓(false)이면, if문 다음의 문장으로 넘어가 '불합격!'이 화면에 출력된다.

 

조건식

if문에 사용되는 조건식은 일반적으로 비교연산자와 논리연산자로 구성된다. 

조건식 조선이 참(true)일 조건
90 <= x && x <= 100 정수 x가 90이상 100이하일 때
x < 0 || x > 100 정수 x가 0보다 작거나 100보다 클 때
x % 3 == 0 && x % 2! = 0 정수 x가 3의 배수지만, 2의 배수가 아닐 때
ch == 'y' || ch == 'Y' 문자 ch가 y또는 Y일 때
'A' <= ch && ch <= 'Z' 문자 ch가 대문자 일 때
str.equals("yes") 문자열 str의 내용이 'yes'일 때

 

괄호 {} 를 이용해서 여러 문장을 하나의 단위로 묶을 수 있다.

if (score > 60 ) 
	System.out.println("합격!");
    
    //---------------------------
    
    if (score > 60 ) {
	System.out.println("합격!");
    }

괄호 없는 문장도 실행 했을 때 출력이 가능하지만 가능하면 생략하지 않고 사용하는 것이 좋다.

 

int a;

System.out.println("숫자 하나를 입력해주세요");

Scanner sc = new Scanner(System.in);
	a = sc.nextLine();

if(a == 0){
	System.out.println("입력하신 숫자는 0입니다.");
}

if(a != 0)
	System.out.println("입력하신 숫자는 0이아닙니다.");
    	System.out.println("입력하신 숫자는 " + a +"입니다.");

위 코드를 실행 했을 때

숫자 하나를 입력해주세요 > 3
입력하신 숫자는 0이아닙니다.
입력하신 숫자는 3입니다.

숫자 하나를 입력해주세요 > 0
입력하신 숫자는 0입니다.
입력하신 숫자는 0입니다.

괄호를 묶지 않아 3번째 문장이 항상 출력된다.

 

괄호를 잘 묶자 !!

 

if - else문

  - if문에 'else블럭'이 추가된 것

  - else의 뜻은 '그 밖의 다른' , 조건식의 결과가 참이 아닐 때

 

if(조건식){
	//조건식이 참(true)일 때 수행될 문장들
   } else {
   	//조건식이 거짓(false)일 때 수행될 문장들
   }

 

if - else if 문

  - 처리해야할 경우의 수가 셋 이상인 경우

  - 한 문장에 여러 개의 조건식을 쓸 때

if(조건식1) {
	//조건식1의 연산결과가 참일 때 수행될 문장들을 적는다.
} else if (조건식2) {
 	//조건식2의 여산결과가 참일 때 수행될 문장들을 적는다.
} else if (조건식3) {
	//조건식3의 연산결과가 참일 때 수행될 문장들을 적는다.
} else { //마지막에는 보통 else블럭으로 끝나며, else블럭은 생략 가능
	//위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
}

 

예시를 들어보겠습니다. 

int score = 0;

System.out.println("점수를 입력하세요 :");
Scanner sc = new Scanner(System.in);
score = sc.nextLine();

if (score >= 90){
	System.out.println("A+");
    }else if(score >=85){
    System.out.println("A");
    }else if(score >=70){
    System.out.println("B");
    }else if(score >=60){
    System.out.println("C");
    }else if(score >=50){
    System.out.println("D");
    }else{
    System.out.println("F");
    }

 

만약 score = 95점일 경우, if문의 score >= 90 조건식에 들어가기 때문에 'A+'이 화면에 출력된다.

score = 45점일 경우, else문의 'F'가 출력이된다.

 

switch문

 if문은 조건식의 결과가 참과 거짓, 두 가지 밖에 없기 때문에 경우의 수가 많아질수록 else-if를 계속 추가해야하므로 조건식이 많아져서 복잡해지고, 여러 개의 조건식을 계산해야하므로 처리시간도 많이 걸린다. 이것을 해결하기 위해 switch문을 사용한다.

  - 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있다.

  - 표현도 간결하므로 알아보기 쉽다.

실행 순서

1. 조건식을 계산한다.

2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후 문장들을 수행한다.
4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.

 

switch (level){
	case 1 : grantRead(); break;//읽기권한을 준다.
    case 2 : grantWrite(); break;//쓰기권한을 준다.
    case 3 : grantDelete(); break;//삭제권한을 준다.
  }

switch문에서 break문은 각 case문의 영역을 구분하는 역할을 하는데, 만일 break문을 생략하면 case문 사이의 구분이 없어지므로 다른 break문을 만나거나 switch문 블럭 {}의 끝을 만날 때까지 나오는 모든 문장들을 수행한다. 

 

그러므로 각 case문의 마지막에 break문을 빼먹지말자.

 

break문을 생략하는 경우도 있다. break문이 없으면 순서대로 case문이 진행된다.

switch문의 제약조건

1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수, 상수만 가능하며, 중복되지 않아야 한다.

 

728x90

'Backend > Java' 카테고리의 다른 글

[디자인패턴] 프로토타입 패턴 [PPT 공유]  (0) 2023.11.21
[Java] 변수 (Variable) 2️⃣  (0) 2023.11.16
[Java] 변수 (Variable) 1️⃣  (1) 2023.11.15
[Java] JDBC 사용법  (0) 2023.11.13
[Java] 메모리 구조  (0) 2023.11.13

관련글 더보기