[패스트 캠퍼스 자바 완주반]4. 제어문
제어문
조건문: if(else), switch-case
반복문: while, do-while
1. 조건문
[if문]
:if (조건 : condition, expression 의 결과가 T,F 또는 변수) {
조건이 해당되면 수행문1
}
else{
해당이 안 되면 수행문2
}
=> {사이} 하나의 블록. 블록이 시작되면 들여쓰기해야 하고 중괄호를 꼭 넣어야 한다
가독성을 생각해서!
=> else의 위치는 같은 줄이던 엔터를 치던 노상관
=> if/ else if / else 여러 개 가능
cf. 순서도: 코딩의 로직을 더 알기 쉽게 (조건식은 마름모, 수행문은 네모)
ex. int age = 10
int charge = 0
if (age<8){
charge = 1000;
} else if (age<14) {
charge = 2000;
} else {
charge = 3000;
}
=> 즉 if는 서로 배타적이지 않음. 성립해도 다음 조건 성립시 모두 해당됨.
그러므로 else를 넣으면 조건 만족 시 다음으로 넘어가지 않음.
cf. 입력받기
Scanner 변수이름 = new Scanner(System.in) => System.out은 출력 얘는 입력
int age = scanner.nextInt(); => 메서드. 사용하면 숫자를 긁어온다
[switch-case문]
if문에서 수행문인
case가 여러개인 경우
정수, 문자열로 수행문의 값이 떨어지는 경우
char mealColor = 'A' (또는 그냥 자료형만 선언)
swtich(rank){
case 1 : medalColor = "G";
break; -> 감싸고 있는 중괄호를 빠져나가라/ 만약 쓰지 않으면 매치가 된 case 이후로 계속 수행을 한다.
case 2 : medalColor = "S";
break;
case 3 : medalColor = "B";
break;
default : medalColor = "A"; => default를 안 쓰면 error가 나니까 기본값을 지정해줘야 (char medalColor = 'A'라고 먼저 정의해놓는것)
}
System.out.println(rank + '등은' + medalColor + '메달입니다')
cf. scanner - 쳤을 때 뜨는 창 첫번째 import(ctrl shift O해도 나옴)
cf. 자바 7부터 문자열 사용 가능
case "Gold" :
System.out.println("금메달");
break
cf. 수행문이 같을 때 case1: case 3: case 5: case 7: case: 7
day = 31;
break;
하면 모두 해당 가능
cf. 만약 default 값을 설정할 필요 없으면 "error"를 프린트하게 해도 된다.
2.반복문
똑같은 명령 조건이 맞으면 여러번 (일정 횟수 등)
[while문]
조건이 참인 동안 수행문 반복 수행
int num = 1;
int sum = 0;
while (num < = 10){
sum += num;
num++;
}
=> sum = 55, num = 11으로 while문이 끝난다.
=> 조건식에 while(true)를 넣으면 무한루프
[do -while문]
일단 수행문 수행하고 조건 체크.
int num = 1;
int sum = 0;
do{
sum += num;
num++;
} while (num < = 10)
[for문]
for는
선언
(초기화; 조건식; 증감식){
출력
}
while은 초기화 미리 해줘야 (조건식, 수행문 중 할 수 없으니까)
선언, 초기화 동시에
(조건식 ){
증감식
}
for(;;) : 무한루프. = while(true)
for (): 조건식, 초기화, 증감식 등 생략 가능할 때도 있음
System.out.println(); => 한 줄 띄우기
이중반복문
구구단 만들기 for, while
for문
while문
이중 반복문
for는 초기화해서 구구단에서 count가 10이 되어도 1로 다음 단에 초기화되어 들어감
하지만 while은 초기화를 따로 명시해주어야 다음 단으로 넘어갈 수 있음
[break문]
제어문은 아니고 함께 사용되는 특히 if문
break문
감싸고 있는 블록 제어 빠져나옴(하던 수행문 중지하고 외부로 빠져나가 실행.)
이중반복문이면 내부 반복문만 빠져나옴
반복문과 함께 쓰면 특정 조건일 때 반복 중지하는 기능 구현 가능.
Ex.
1부터 쭉 더하다가 100을 넘었을 때
마지막으로 더한 수와 합 구하기
cf. 지역변수의 가시성: 블록 안에서 선언했으면 밖에서 출력할 수 없음
이때 초기화, 조건식, 출력, 증감식 순으로 for문이 돌아가기 때문에
더한 수가 1더 큰 15가 나옴(실제 답은 14, 105)
그러므로 조건식을 생략하고 sum +=num을 하고
if sum>=100(조건식을 아래로 내린뒤) break;} =>증감식이 일어나기 전에 break하는 것
continue문
반복 수행 중 조건문과 조건이 맞는 경우 블록 내부의 다른 수행문 수행하지 않음
(조건이 맞으면 그 뒤 수행문은 전혀 하지 않고 넘어간다 )
Ex.
100이하 3의 배수 출력
조건이 맞으면 아래 수행문이 일어나지 않고 계속 돌아감.
3의 배수가 아니면 아래를 하지 않음.
그러므로 3의 배수일 때만 출력.
break, continue문
짝수단만 그리고 곱하는 수가 단보다 작거나 같을 때만 구구단 출력
Ex.