카테고리 없음
[Java 혼자 공부하는 자바] 조건문과 반복문 (If문, If ~ else if ~ else 문, Switch문)
나수비니
2023. 9. 23. 01:20
728x90
조건문, 반복문은 이론으로 공부하는 것 보다, 직접 코드를 쳐보면서 체화하는 게 효율적일 것 같아 코드를 직접 쳐보며 공부했다.
코테에서 봤던 문제들이 있어서, 역시 기본이 중요하구나.. 생각했다.
핵심 키워드
- If문, If ~ else문, if ~else if ~else문, switch문
핵심 포인트
- 자바 프로그램은 main() 메소드의 시작 중괄호 {에서 끝 중괄호} 까지 위에서부터 아래로 실행하는 흐름.
- 종류에는 조건문과 반복문이 있다.
조건문
- 조건식에 따라 다른 실행문을 실행하기 위해 사용
if문
- 조건식 결과에 따라 블록 실행 여부가 결정
- 조건식에 올 수 있는 요소
- true/false 값을 산출하는 연산식
- boolean 타입 변수
- 중괄호 블록은 조건식이 ture가 될 때 실행
- 실행할 문장 하나뿐일 경우 생략 가능
if-else문
- if문을 else 블록과 함께 사용
- 조건식의 결과에 따라 실행 블록 선택
- if문 조건식 true이면 if문 블록 실행
- if문 조건식 false이면 else 블록 실행
if-else if-else문
- 조건식이 여러 개인 if문
- 처음 if문의 조건식이 false일 경우 다른 조건식의 결과에 따라 실행 블록 선택
- if 블록 끝에 else if문 추가
- else if문 개수는 제한 없음
package sec01.exam03;
public class ifElseifElseExample {
public static void main(String[] args) {
int score = 90;
if(score>=90) {
System.out.println("점수가 100~90 입니다.");
System.out.println("등급은 A 입니다.");
} else if(score>=80){
System.out.println("점수가 80~89 입니다.");
System.out.println("등급은 B 입니다.");
} else if(score>=70){
System.out.println("점수가 70~79입니다.");
System.out.println("등급은 C 입니다.");
} else {
System.out.println("점수가 70 미만 입니다.");
System.out.println("등급은 D 입니다.");
}
}
}
If문으로 주사위 출력하기
package sec01.exam04;
public class IfDiceExample {
public static void main(String[] args) {
int num = ((int)(Math.random()*6)+1);
if (num ==1) {
System.out.println("1번이 나왔습니다.");
}else if (num == 2) {
System.out.println("2번이 나왔습니다.");
}else if (num == 3) {
System.out.println("3번이 나왔습니다.");
}else if (num == 4) {
System.out.println("4번이 나왔습니다.");
}else if (num == 5) {
System.out.println("5번이 나왔습니다.");
}else if (num == 6) {
System.out.println("6번이 나왔습니다.");
}
}
}
- random은 0.0에서 1.0 사이의 실수를 리턴
Switch문
- 변수가 어떤 값을 갖는가에 따라 실행문 선택
- 같은 기능의 if문보다 코드가 간결
Switch문으로 주사위 값 구하기
package sec01.exam05;
public class SwitchExample {
public static void main(String[] args) {
int num = (int)(Math.random()*6) + 1;
switch(num) {
case 1:
System.out.println("1번이 나왔습니다.");
case 2:
System.out.println("2번이 나왔습니다.");
case 3:
System.out.println("3번이 나왔습니다.");
case 4:
System.out.println("4번이 나왔습니다.");
case 5:
System.out.println("5번이 나왔습니다.");
default:
System.out.println("6번이 나왔습니다.");
}
}
}
🟡 코드 뜯기
- (int)(Math.random()*6) 0이상 6 미만의 난수를 생성한다.
- 이후, ‘+1’을 더하여 1 이상 6 이하의 숫자가 생성된다.
- 이 숫자는 주사위를 던져 나오는 값처럼 1부터 6까지의 숫자 중 하나가 된다.
- switch(num) 'num' 변수에 저장된 값을 기반으로 ‘switch’ 문이 분기한다.
- ‘case’문
- 예를 들어, 'case 1'은 ‘num’의 값이 1일 때 실행되는 코드 블록을 정의한다.
- ‘default’
- 어떤 ‘case’에도 해당하지 않을 때 실행되는 블록
현재 시간을 생성하고, Switch 문을 사용해 메시지 출력하기
package sec01.exam06;
public class SwtichNoBreakCaseExample {
public static void main(String[] args) {
// 8 <= < 12(8+4)
// 매스.랜덤 0.0 ~ 1.0 실수 출력하고 *4하면 -> 0.0 ~ 4.0 실수 리턴.
// 4.0은 1.0이 포함이 안 되기 때문에 4.0은 포함이 안 된다. 왜?
// Math.random() 함수는 0 이상 1미만의 난수를 생성한다.
// 결과적으로 0 이상 3 이하의 정가 생성된다.
// Math.ramdom()*4가 0.0이상 4.0미만의 실수를 반환하고, 이를 (int)를 사용해 정수로 형변환하면
// 0,1,2,3,중 하나의 값이 된다.
// int로 바꾸게되면 0,1,2,3
int time = (int)(Math.random()*4) + 8;
System.out.println("[현재시간: " + time + " 시");
switch(time) {
case 8:
System.out.println("출근합니다.");
case 9:
System.out.println("회의를 합니다.");
case 10:
System.out.println("업무를 봅니다.");
default:
System.out.println("외근을 나갑니다.");
}
}
}
🟡 코드 뜯기
int time = (int)(Math.random()*4) + 8;
System.out.println("[현재시간: " + time + " 시");
- 🏳️ 짚기
- Math.random : 0.0 ~ 1.0 사이의 실수를 출력 → *4 → 0.0 ~ 4.0 실수를 리턴하고, 이를 int를 이용해 정수로 형변환 ⇒ 0, 1, 2, 3이 된다.
- ‘case’문 끝에 break;가 없기 때문에 결과값이 true 가 되더라도, 계속 출력
package sec01.exam07;
public class SwitchCharExample {
public static void main(String[] args) {
char grade = 'B';
switch(grade) {
case 'A':
case 'a':
System.out.println("우수 회원입니다.");
break;
case 'B':
case 'b':
System.out.println("일반 회원입니다.");
break;
default:
System.out.println("손님입니다.");
}
}
}
//"일반 회원입니다."
🟡 코드 뜯기
- char grade = 'B';
- char 타입 grade에 ‘B’ 라는 문자를 저장
- case 문에서 단 ‘A’, ‘a’ 단 하나라도 해당되면 출력
String 사용해 Switch문 구성 - 문자열 값에 따라 다른 동작 수행
package sec01.exam08;
public class SwitchStringExample {
public static void main(String[] args) {
String position ="과장";
//switch에 포지션 변수가오다.
switch(position) {
case "부장":
System.out.println("700만원");
break;
case "과장":
System.out.println("500만원");
break;
default:
System.out.println("300만원");
}
}
}
🟡 코드 뜯기
- 'String position = "과장";
- String 변수 ‘position’ 변수 선언, 초기값 = “과장” 할당