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("프로그램 종료"); } }
이전에 작성했던 위의 두 구문을 보셔도 이해가 될겁니다!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > Java' 카테고리의 다른 글
[java] 이것이 자바다 ch05 참조 타입 (0) | 2023.01.09 |
---|---|
[java] 메모리 구조 (0) | 2023.01.09 |
[java] 이것이 자바다 ch2 변수 확인 문제 풀이 (0) | 2023.01.05 |
[java] 이것이 자바다 ch2 자동 타입 변환 및 변수 범위 (0) | 2023.01.05 |
[java] 이것이 자바다 ch2 변수와 타입 (0) | 2023.01.05 |