수많은 명령어들의 집합
명령어들이 실행되는 순서 > 위 -> 아래
제어의 흐름을 통제하는 도구
조건 제어, 반복 제어, 분기 제어
개발자가 조건을 제시한 후 결과에 따라 흐름을 제어
조건식 > boolean 값을 가지는 표현식
1. if문
if(조건식) {
문장;
}
--------------------------------------------------------------
if(조건식) {
문장;
} else {
문장;
}
------------------------------------------------------------------
다중 조건문 => else if는 원하는 만큼
if(조건식) {
문장;
} else if (조건식){
문장;
}
---------------------------------------------------------------------
if(조건식) {
문장;
}
[else if (조건식){
문장;
}] x N
[else {
문장;
}]
int num = 0;
if (num > 0) { //참일 때 실행
System.out.println("num은 양수입니다."); //false 일때는 실행이 안됨
}
if (num > 0) {//참일 때 실행
System.out.println("num은 양수입니다."); //false 일때는 실행이 안됨
} else { //거짓일 떄 실행
System.out.println("nume은 음수입니다.");
}
if (num > 0) {//참일 때 실행
System.out.println("num은 양수입니다."); //false 일때는 실행이 안됨
} else if (num < 0 ) { //거짓일 떄 실행
System.out.println("nume은 음수입니다.");
} else {
System.out.println("num은 0입니다.");
}
System.out.println("종료");
private static void m5() throws IOException {
//성적(0~100) 입력 > 합격/불합격
//+ 유효성 검사
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("성적: ");
int score = Integer.parseInt(reader.readLine());
//1. 합격일때
//2. 불합격일때
//로직이 다르기 떄문에 1,2번과 3번은 분리 해줘야 함
//3. 잘못 입력(유효성)
if(score >= 60 && score <=100) {
System.out.println("합격");
}else if (score >=0 && score < 60) {
System.out.println("불합격");
}else {
System.out.println("점수는 0~100 이내로 입력하세요");
}
//조건을 의도에 맞게 잘 분리 해줘야 함
// 중첩 if문
if(score >= 0 && score <= 100) {
if (score >= 60) {
System.out.println("합격");
}else {
System.out.println("불합격");
}
} else {
System.out.println("점수는 0~100 이내로 입력하세요");
}
}
2. switch문
//조건 : 값(데이터) > 정수, 문자열, 열거형
switch (조건) {
case 값 :
구현부;
break;
[case 값 :
구현부;
break;] * N
[default:
구현부;
break;]
//요구사항] 숫자를 1개 입력받아 한글로 출력하시오.
// 1 > "하나"
// 2 > "둘"
int num = 3;
if (num == 1) {
System.out.println("하나");
}else if (num ==2) {
System.out.println("둘");
}else {
System.out.println("셋");
}
switch (num) {
case 1: {
System.out.println("하나");
break;
}
case 2: {
System.out.println("둘");
break;
}
case 3: {
System.out.println("셋");
break;
}
}
특정 코드를 개발자가 원하는 횟수만큼 반복한다.
생산성 향상 + 유지보수성 향상
for (초기식; 조건식; 증감식) {
구현부;
}
//break > 현재 자신이 속한 제어문을 탈출해라!!
// > if문 제외
//continue > 이번 반복을 중단하고 다시 시작으로 이동해라!!
//break > 루프 완전 중단
//continue > 이번만 건너뛰기
for (int i=1; i<=10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
System.out.println();
//결과 : 1234
for (int i=1; i<=10; i++) {
if (i == 5) {
continue;
}
System.out.println(i);
}
System.out.println();
//결과: 1234678910
회전을 몇번 할지 모를 때 무한루프 사용
// 무한 루프 생성하기
// for (int i=0; true; i++) {
// System.out.println("실행문");
// }
// for (int i=0; ; i++) {
// System.out.println("실행문");
// }
// for (;;) {
// System.out.println("실행문");
// }
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int sum = 0;
for (;;) {
System.out.print("숫자: ");
int num = Integer.parseInt(reader.readLine());
if (num == 0) {
break;
}
sum += num;
}
System.out.println(sum);
//별찍기(5x5)
for (int i=0; i<5; i++) {
for (int j=0; j<5; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
for (int i=0; i<5; i++) {
for (int j=i; j<5; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
for (int i=0; i<5; i++) {
for (int j=0; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
//결과
*****
*****
*****
*****
*****
*****
****
***
**
*
*
**
***
****
*****
2. while문
while (조건식) {
구현부;
}
do {
구현부;
} while (조건식);
//1~10 출력
int n = 1;
while (n <= 10) {
System.out.println(n);
n++;
}
System.out.println();
int m = 11;
do {
System.out.println(m);
m++;
} while (m <= 10); //do가 먼저 실행되기 때문에 while문 실행 안됨
//결과
1
2
3
4
5
6
7
8
9
10
11