본문 바로가기

BackEnd/Java

[java] 이것이 자바다 ch4 조건문과 반복문

728x90
반응형

1. 코드 실행되는 흐름 제어하기

 

▷ 실행 흐름 : main() 메소드의 시작 중괄호( { )에서 끝 중괄호( } )까지 위부터 아래로 실행되는 흐름

흐름 제어문 : 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것

루핑 : 반복문이 실행 완료된 경우 제어문 처음으로 다시 되돌아가 반복 실행되는 것

 

NO 조건문 반복문
1 if문, switch문 for문, while문, do-while문

 

코드가 실행되는 흐름


◎ 순서도(순차구조, 선택구조)

 

 

 

2. if문

   ▷ If문 : 조건식의 결과에 따라 블록 실행 여부가 결정합니다.

   ▷ 조건식에는 true 또는 false 값을 산출할 수 있는 연산식이나 boolean 변수가 올 수 있습니다.

   ▷ 조건식이 true면 블록을 실행하고 false면 블록을 실행하지 않습니다.

   ▷ If-else문 : 조건식이 treu면 if문 블록이 실행되고, false면 else 블록이 실행됩니다.

 

 

◎ if문 사용 예시


public class ifExample {
	public static void main(String[] args) {
		
		int score = 93;
		
		// 참일때만 실행문 1을 실행, 거짓일때는 실행문 2를 실행
		if(score >= 90) {
			// 실행문 1 : 참일때
			System.out.println("점수가 90보다 큽니다.");
			System.out.println("등급은 A입니다.");
		} else {
			// 실행문 2 : 거짓일때
			System.out.println("점수가 90보다 작습니다.");
			System.out.println("등급은 B입니다.");
		}
	}
}

// 출력 : 
// 점수가 90보다 큽니다.
// 등급은 A입니다.


▷ 위의 if문에 중괄호를 없애면 한 줄만 조건이 적용됩니다. 두 번째 줄은 그냥 실행됩니다.
   ▶ System.out.println("점수가 90보다 큽니다.");, System.out.println("점수가 90보다 작습니다."); 만 조건식 적용

public class ifExample {
	public static void main(String[] args) {
		
		int score = 93;
		
		if(score >= 90) {
			System.out.println("점수가 100-90입니다.");
			System.out.println("등급은 A입니다.");
		} else if(score >= 80) {
			System.out.println("점수가 89-80입니다.");
			System.out.println("등급은 B입니다.");
		} else if(score >= 70) {
			System.out.println("점수가 79-70입니다.");
			System.out.println("등급은 C입니다.");
		} else {
			System.out.println("점수가 70미만 입니다.");
			System.out.println("등급은 D입니다.");			
		}
	}
}

// 출력 : 
// 점수가 100-90입니다.
// 등급은 A입니다.


 

 

◎ Math.random() 함수 사용

//		Math.random() : 랜덤한 수를 출력
//		0.0 <= Math.random() < 1.0
		
//		0.0 * 6 <= Math.random() * 6 < 1.0 * 6
//		0.0 <= Math.random() * 6 < 6.0 
//		정수형으로 변경하면 : 0,1,2,3,4,5
//		(int)0.0 <= (int)(Math.random() * 6) < (int)6.0
		
//		1~6까지 출력하려면 
//		(int)1.0 <= ((int)(Math.random() * 6) + 1) < (int)7.0


		int num = (int)(Math.random() * 45) + 1;   //로또번호 출력방법

 

 

 

3. switch문

   ▷ switch문 : 괄호 안의 변수 값에 따라 해당 case로 가서 실행문을 실행합니다.

   ▷ 변수 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행하며, default 생략 가능합니다.

   ▷ break는 다음 case를 실행하지 않고 switch 문을 빠져나갈 때 사용합니다.

   ▷ break가 없다면 다음 case가 연달아 실행됩니다.

 

 

◎ switch문 사용 예시

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("손님입니다.");
		}
		
//		자바 12이후 사용법 Expressions(표현식)
//		switch(grade) {
//		case 'A', 'a' -> System.out.println("우수 회원입니다.");
//		case 'B', 'b' -> System.out.println("일반 회원입니다.");
//		default -> System.out.println("손님입니다.");
//		}
	}
}

 

 

 

4. for문

   ▷ for문 : 실행문을 여러 번 반복하므로 코드를 간결하게 만들어줍니다.

   ▷ 초기화식이 가장 먼저 실행, 조건식을 평가해서 true이면 실행문 실행, false이면 for문 종료하고 블록을 건너뜁니다.

   ▷ 조건식이 true가 되어 실행문을 다시 실행하면 증감식이 실행됩니다.

   ▷ 다시 조건식을 평가, 평가 결과가 다시 true이면 앞의 내용을 다시 반복하고 false이면 for문 종료합니다.

   ▷ 초기화식에서 부동 소수점을 쓰는 float 타입을 사용하지 않도록 주의하세요.

 

for문 사용 예시

public class forExample {
	public static void main(String[] args) {
		
		for(int i=1; i <= 10; i++) {
			System.out.print(i + " ");
		}
		System.out.println();
		System.out.println("프로그램 종료");
	}
}​

 

▷ float를 이용해 for문을 실행하면 제대로된 결과 값이 나타나지 않습니다.(아래의 코드 참고)
public class FloatCounterExample {
	public static void main(String[] args) {
		
		for(float x=0.1f; x <= 1.0f; x += 0.1f) {
			System.out.println(x);
		}
	}
}

// 출력 : 
// 0.1
// 0.2
// 0.3
// 0.4
// 0.5
// 0.6
// 0.70000005
// 0.8000001
// 0.9000001



구구단 출력 예시

public class MultiplicationTableExample {
	public static void main(String[] args) {
		
		// 총 실행 횟수 8 * 9 = 72번 실행
		for(int m=2; m<=9; m++) {       // 2 3 4 5 6 7 8 9 : 8번
			System.out.println("*** " + m + "단 ***");
			for(int n=1; n<=9; n++) {   // 1 ~ 9 : 9번
				System.out.println(m + " x " + n + " = " + (m*n));
			}
			System.out.println();
		}
	}
}

 

 

 

5. while문

   ▷ 조건식이 true일 경우에 계속해서 반복하고, false가 되면 반복을 멈추고 while문을 종료합니다.

   ▷ while문이 처음 실행될 때 조건식을 평가, 평가 결과가 true이면 실행문을 실행합니다.

   ▷ 실행문이 모두 실행되면 조건식으로 되돌아가서 조건식을 다시 평가합니다.

   ▷ 다시 조건식이 true라면 실행문을 반복하고 false면 while문을 종료합니다.

   ▷ 조건식에 true를 사용하면 while(true){...}가 되어서 무한 반복합니다. 이 경우 while문을 빠져나가기 위한 코드 필요합니다.

 

◎ while문 예제

public class WhileExample {
	public static void main(String[] args) {
		int i = 1;
		while ( i <= 10 ) {
			System.out.print(i + " ");
			i++;
		}
	}
}


while문 코드를 잘 못 이용하면 시스템이 망가질 수 있습니다. 따라서 탈출 조건을 주어야합니다.

public class WhileExample2 {
	public static void main(String[] args) {
		int i = 1;
		int sum = 0;
		
		while (i <= 100) {
			sum += i;
			i++;
		}
		System.out.println("1~" + (i-1) + " 합: " + sum);
	}
}

 

 

 

◎ while문 추가 예제(속도 증감)

public class KeyControlExample {
	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.print("선택 : ");
			
			String strNum = sc.nextLine();
			
			if(strNum.equals("1")) {
				speed++;
				System.out.println("현재 속도  = " + speed);
			} else if(strNum.equals("2")) {
				speed--;
				System.out.println("현재 속도  = " + speed);
			} else if(strNum.equals("3")) {
				run = false;
			}
		}
	}
}

// 출력 : 
// ---------------------
// 1. 증속 | 2. 감속 | 3. 중지
// ---------------------
// 선택 : 1
// 현재 속도  = 1
// ---------------------
// 1. 증속 | 2. 감속 | 3. 중지
// ---------------------
// 선택 : 2
// 현재 속도  = 0
// ---------------------
// 1. 증속 | 2. 감속 | 3. 중지
// ---------------------
// 선택 : 3

 

 

 

6. 실행 결과에 따라 실행문을 반복하는 do-while문

   ▷ 블록 내부를 먼저 실행시키고 실행 결과에 따라서 반복 실행을 계속할지 결정

   ▷ 작성시 while() 뒤에 반드시 세미콜론(;)을 붙여야 하는데 주의

   ▷ do-while문이 처음 실행될 때 실행문을 우선 실행한다. 실행문이 모두 실행되면 조건식을 평가합니다.

   ▷ 평가 결과가 true이면 실행문과 조건문을 다시 검토하고 조건식의 결과가 false이면 do-while문을 종료합니다.

 

public class DoWhileExample {
	public static void main(String[] args) {

		System.out.println("메시지를 입력하세요");
		System.out.println("프로그램을 종료하려면 q를 입력하세요.");
		
		Scanner sc = new Scanner(System.in);
		String inputString;
		
		do {
			System.out.print(">");
			inputString = sc.nextLine();
			System.out.println(inputString);
		} while( !inputString.equals("q"));
		
		System.out.println();
		System.out.println("프로그램 종료");
	}
}

 

https://bobo12.tistory.com/11

 

[java] 조건문(if, switch문)

1. if문 if(조건식) { // 실행부 } // 조건식 : 식의 결과가 참 또는 거짓으로 구분될 수 있는 문장 // 실행부 : 조건식의 결과가 참이면 실행합니다. 2. if-esle문 if(조건식) { // 실행부1 } else { // 실행부2

bobo12.tistory.com

 

https://bobo12.tistory.com/13

 

[java] 반복문(for, while, do~while)

특정 작업 또는 구문을 반복적으로 수행하고 싶을 때 사용하는 문장입니다. 1. for문 특정 횟수동안 작업을 반복하고 싶을 때 사용하는 반복문입니다. for( 초기화; 조건식; 증감식 ) { System.out.printl

bobo12.tistory.com

 

이전에 작성했던 위의 두 구문을 보셔도 이해가 될겁니다!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형