JAVA/STUDY

[JAVA] 조건문과 반복문(if, switch, for, while문)

코맹 2024. 2. 12. 18:11

 

1. 제어문

제어문은 프로그램의 순차적인 흐름을 바꾸어주는 문장으로, 자바 프로그램의 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 문장이다.

제어문에는 조건문, 반복문, 분기문이 있다. 그중 조건문과 반복문에 대해 알아볼 것이다.

 

2. 조건문

조건문에는 if문 / switch문이 있다.

 

1-1) if문
if (조건식) {
		실행문;
    	실행문;
}

if문의 중괄호({}) 블록에는 여러 개의 실행문이 들어갈 수 있으며 if문 뒤에 오는 조건식이 참(true)이면 블록 안의 실행문이 실행된다.

 

if(score>=90) {
		System.out.println("점수가 90보다 큽니다.");
		System.out.println("등급은 A입니다.");
			
		}

 

1-2) if-else문

if문의 조건식이 참(true)이면 if문의 블록이 실행되고, 조건식이 거짓(false)이면 else 블록의 실행문이 실행된다.

조건식의 결과에 따라 이 두개의 블록 중 어느 한 블록의 내용만 실행되고 전체 if문 밖으로 나오게 된다.

 

int score = 100;
		
if(score > 90) {
	System.out.println("점수가 90보다 큽니다.");
	System.out.println("등급은 A입니다.");
			
} else {
	System.out.println("점수가 90보다 작습니다.");
			
}

 

 

1-3) if - else if - else문

조건문이 여러개인 if문도 사용할 수 있다. 처음 if문의 조건식이 거짓(false)일 경우, 다른 조건식의 결과에 따라 실행 블록을 선택할 수도 있는데 if문 끝에 else if문을 붙이면 된다.

else if문 뒤에는 else 블록을 추가할 수 있는데, 위에 있는 모든 조건식이 거짓(false)인 경우에 else 블록이 실행된다.

 

Scanner sc = new Scanner(System.in);
		
System.out.println("점수를 입력하세요.");
int score = sc.nextInt();
		
if(score>=90) {
	System.out.println("점수가 90보다 큽니다.");
	System.out.println("등급은 A입니다.");
			
} else if(score >= 80){
	System.out.println("점수가 90보다 작고 80보다 큽니다.");
	System.out.println("등급은 B입니다.");
			
} else if(score >= 70) {
	System.out.println("점수가 80보다 작고 70보다 큽니다.");
	System.out.println("등급은 C입니다.");
			
} else if(score >= 60) {
	System.out.println("점수가 70보다 작고 60보다 큽니다.");
	System.out.println("등급은 D입니다.");
			
} else {
	System.out.println("재수강입니다.");
			
}

 

1-4) 중첩 if문

if문 안에 또다른 if문을 사용할 수 있다. 이것을 중첩 if문이라고 부른다. 

중첩의 단계는 제한이 없고, if문 뿐만 아니라 제어문의 경우 다 중첩할 수 있다.

int score = 95;

if(score > 90 ) {
	if(score >= 95) {
    	System.out.println("점수가 95이거나 그보다 크다.");
        
    }
}

 

2) switch문

switch문은 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다.(if문과의 차이점)

- 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행시킨다. 
- default : 괄호 안의 값과 동일한 값을 갖는 case가 없을 때, default로 가서 실행문을 시킨다.
  (default는 생략 가능하다.)

 

char grade = 'a';
		
switch (grade) {
	case 'A' :
	case 'a' :
			System.out.println("우수 회원입니다.");
			break;
			
	case 'B':
	case 'b':
			System.out.println("일반 회원입니다.");
			break;
			
	default:
			System.out.println("손님입니다.");
		
		}

 

int num = (int)(Math.random() * 6) + 1 ;
System.out.printf("random: %f, num: %d\n", Math.random(), num);
		
switch(num) {
	case 1 :
		System.out.println("1번이 나왔습니다.");
				
		break;
				
	case 2:
		System.out.println("2번이 나왔습니다.");
			
		break;
				
	case 3:
		System.out.println("3번이 나왔습니다.");
				
		break;
				
	case 4:
		System.out.println("4번이 나왔습니다.");
				
		break;
				
	case 5:
		System.out.println("5번이 나왔습니다.");
				
		break;
				
	default:
		System.out.println("6번이 나왔습니다.");

		}

 

3. 반복문

1) for문

for문은 정해진 횟수만큼 반복해야할 때 사용한다.

for문 구조

 

- 초기화식에서 선언된 변수는 for문 블록 내에서 사용되는 로컬 변수이다. 즉, for문 밖에서는 사용할 수 없다.

- 조건식이 참(true)이면 실행문을 실행시키고, false면 for문 블록을 실행시키지 않고 끝난다.

- 만약 초기화식이 필요없는 경우 생략할 수 있다. (ex. for(i < 100; i++))

 

int sum = 0;
int i;
		
for(i = 1; i <= 100; i++) {
		sum += i;			// 누적 시키는 변수는 반드시 0으로 초기화를 시켜줘야 함
        System.out.printf("1 ~ " + (i-1) + " 합: %d\n", sum);
			
}

 

Scanner sc = new Scanner(System.in);
		
System.out.println("출력할 단을 입력하세요.");
int mul = sc.nextInt();
System.out.println("[" + mul + "단" + "]");

	for(int n = 1; n <= 9; n++) {
		System.out.println(mul + "*" + n + "= " +  (mul * n));
				
	}

 

2) while문

for문이 정해진 횟수만큼 반복한다면 while문은 조건식이 true인 경우 계속해서 반복한다.

조건식에는 비교 or 논리연산식이 주로 오는데, 조건식이 false가 되면 반복행위를 멈추고 while문을 종료한다.

- 조건식에는 boolean 변수나 true/false 값을 산출하는 연산식이 올 수도 있음

- 만약 조건식에 true가 들어가면 (while (true) {}) 항상 조건식이 true가 되면서 무한루프를 돈다.

- 무한루프는 무한히 반복되기 때문에 while문을 빠져나가기 위한 코드가 필요하다.
  (ex. break; 를 통해 while문을 빠져나갈 수 있다.)

 

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		boolean run = true;
		int speed = 0;
		
		while(run) {
			System.out.println("---------------------");
			System.out.println("1.증감 | 2.감속 | 3.중지");
			System.out.println("---------------------");
			System.out.println("선택: ");

			int button = sc.nextInt();
			sc.nextLine();
		
			switch(button) {
			case 1:
				speed ++;
				System.out.printf("현재 속도 = %d \n\n", speed);
				
				break;
				
			case 2:
				speed --;
				System.out.printf("현재 속도 = %d \n\n", speed);
				
				break;
				
			case 3:
				run = false;
				break;
				
				default:
					System.out.println("다시 선택하세요.");
			
			}
			
		}
		
		System.out.println("종료");
		
	}

 

for문과 while문의 차이점❓


for문
- 초기값과 조건식 증감연산으로 이루어져 있으며 동작문을 실행
- 조건식으로 true/false를 판단
- for문은 조건식이 들어가 있으므로 구하고자 하는 값의 조건이 무엇인지 정확할 경우에 사용한다.

whlie문
- 조건식이 false가 될 때까지 무한 실행
- true라면 계속 실행하고 false가 되면 즉시 while문 종료
- 무한루프가 발생할 수 있으므로 종료하는 구문이 필요하다.
  (변수를 이용하여 false를 지정하거나 break문을 사용하여 무한루프를 벗어날 수 있다.)
- 이와 같이 루프를 계속 돌기 때문에 내가 구하고자 하는 값의 조건이 무엇인지 정확히 모를 경우에 사용한다.

 

'JAVA > STUDY' 카테고리의 다른 글

[Java] Optional 사용  (0) 2025.04.10
[Java] Enum 열거형 타입  (0) 2024.08.09
[JAVA] 멀티 스레드(1)  (2) 2024.02.15
[JAVA] 배열 (Array)  (2) 2024.02.14
[JAVA] 자바 변수, 선언, 초기화  (2) 2024.02.12