JAVA/Do it! 자바 프로그래밍 입문

[Do it 자바 프로그래밍 입문] 04 제어 흐름 이해하기

yun.data 2023. 3. 23. 17:08

 

1. 조건문

1-1. 조건문이란?

  • 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍 하는 것

 

1-2. if문과 if-else문

int age = 10;
if (age > 20) {
	System.out.println("20대 이상입니다");
}
else {
	System.out.println("20대 이상이 아닙니다");
}

 

 

1-3. if-else if-else문

  • 하나의 상황에 조건이 여러 개인 경우
int age = 10;
if (age < 10) {
	System.out.println("10세 미만입니다");
}
else if (age < 20) {
	System.out.println("20세 미만입니다");
}
else {
	System.out.println("성인입니다");
}

 

  • [나 혼자 코딩] 성적에 따라 학점 부여하기
public class E1 {
	public static void main(String[] args) {
	
	int score;
	char grade;

	score = 100;
	
	if(score >= 90) { grade = 'A'; }
	else if (score >= 80) { grade = 'B'; }
	else if (score >= 70) { grade = 'C'; }
	else if (score >= 60) { grade = 'D'; }
	else grade = 'F';	
	
	System.out.println("your grade: " + grade);
	}
}

 

 

1-4. 조건문과 조건 연산자

if (a>b) max = a;
else max = b;

// 위 코드는 다음과 같이 표현할 수 있다
max = (a>b) ? a:b;

 

 

1-5. switch-case문

  • 조건식의 결과가 정수 또는 문자열 값이고 그 값에 따라 수행되는 경우가 각각 다른 경우에 주로 사용
  • 앞선 성적 예제 변형하여 swtich-case문 만들기
public class E2 {
	public static void main(String[] args) {	
		char grade;
		int percent;		
		grade = 'A';
        
		switch(grade) {
		case 'A': percent = 20; break;
		case 'B': percent = 40; break;
		case 'C': percent = 60; break;
		case 'D': percent = 80; break;
		default: percent = 100; break;
		}
        System.out.println("상위 " + percent + "% 입니다.");
	}
}
  • case문 동시에 사용하려면 case 1 : case 2 : case 3  …처럼 직렬 나열
  • break;가 없을 시 모든 코드 수행하기 때문에 필수 사용

 

 

1-6. case문에 문자열 사용

  • 자바 7부터는 정수뿐 아니라 문자열도 사용 가능
  • [나혼자 코딩] 건물 층수에 따른 엘리베이터 안내 출력
public class E3 {
	public static void main(String[] args) {
		int floor;		
		floor = 5;
        
		switch(floor) {
		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("존재하지 않는 층입니다"); break;
		}	
	}
}

 

  • [응용] 층수 입력받기
public class E3 {
	public static void main(String[] args) {
		
		int floor;	
		Scanner sc = new Scanner(System.in);
		
		System.out.println("층수를 입력해주세요.");
		floor = sc.nextInt();
		
		switch(floor) {
		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("존재하지 않는 층입니다"); break;
		}	
	}
}

 

 


2. 반복문

2-1. 반복문이란?

  • 반복되는 일을 처리 위해 사용하는 것

 

2-2. while문

public class whileEx {
	public static void main(String[] args) {
		int num = 1;
		int sum = 0;
        
		while(num <= 10) {
			sum += num;
			num++;
		}
        
		System.out.println("1부터 10까지의 합: "+ sum);
	}
}
  • 조건이 계속해서 참일 경우 무한반복 가능 (ex: while(true))

 

 

2-3. do-while문

  • do { } 안에 있는 문장을 무조건 한 번 수행한 후에 조건식 검사

 

 

2-4. for문

public class forEx {
	public static void main(String[] args) {
		int num = 1;
		int sum = 0;
        
		for(num=1; num<=10; num++) {
			sum += num;
		}
        
		System.out.println("1부터 10까지의 합: "+ sum);
	}
}

 

  • [나 혼자 코딩] for문으로 안녕하세요1~10까지 차례로 출력
public class E4 {
	public static void main(String[] args) {
		for(int num=1; num<=10; num++) {
			System.out.println("안녕하세요" + num);
		}
	}
}
  • for문은 반복 횟수 관리가 가능하다는 점에서 용이함
  • 조건식의 가독성이 좋음

 

 

2-5. for문 요소 생략

  • 초기화식, 조건식은 세미콜론으로 생략 가능함
  • 증감식은 생략하고 for문 내부에 작성하여도 됨

 

 

2-6. 중첩 반복문

  • 내부 반복문 실행이 끝난 이후 외부 반복문으로 되돌아감

 

 

2-7. continue문

  • continue를 만나면 이후의 문장을 수행하지 않고 for문의 처음으로 돌아가 증감식을 수행함
  • 특정 조건에서는 수행하지 않아야 할 때 사용

 

 

2-8. break문

  • break 사용시 그 지점에서 더 이상 수행문을 반복하지 않고 반복문을 빠져나옴
  • 중첩 반복문의 경우 break문을 감싸고 있는 반복문만 빠져나옴