if (조건식) {
// 조건식이 참(true)일 때 수행될 문장들을 적는다.
}if (score > 60) { System.out.println("합격입니다. "); }
- "만일 조건식이 참이라면, 괄호{} 안의 문장들을 수행하라."
- score = 80이라면 조건식이 참이므로 "합격입니다. " 출력.
- java에서 조건식의 결과는 반드시 true 또는 false이다.
- 블럭 내의 문장이 하나뿐인 경우 괄호{} 생략 가능
✨ 예제 1
public class FlowEx1 {
public static void main(String[] args) {
int x = 0;
System.out.printf("x=%d 일 때, 참인 것은 %n", x);
if(x==0) System.out.println("x==0");
if(x!=0) System.out.println("x!=0");
}
}
✨ 예제 2
import java.util.*;
public class FlowEx2 {
public static void main(String[] args) {
int input;
System.out.print("숫자를 하나 입력하세요.>");
Scanner scanner = new Scanner(System.in);
String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
input = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
if(input==0) {
System.out.println("입력하신 숫자는 0입니다.");
}
if(input!=0) {
System.out.println("입력하신 숫자는 0이 아닙니다.");
System.out.printf("입력하신 숫자는 %d입니다.", input); //if문에 포함되지 않음(두 번째 줄이므로)
}
}
}
if (조건식) {
// 조건식이 참(true)일 때 수행될 문장들을 적는다.
} else {
// 조건식이 거짓(false)일 때 수행 될 문장들을 적는다.
}
- 조건식의 결과가 참이냐 거짓이냐에 따라 수행되는 결과가 달라진다.
- if-else문 역시 블럭 내의 문장이 하나라면 괄호{}를 생략할 수 있다.
✨ 예제 3
import java.util.*;
public class FlowEx3 {
public static void main(String[] args) {
System.out.print("숫자를 하나 입력하세요. >");
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt(); //화면을 통해 입력받은 숫자를 input에 저장
if(input==0) {
System.out.println("입력하신 숫자는 0입니다.");
} else { // input != 0인경우
System.out.println("입력하신 숫자는 0이 아닙니다. ");
}
}
}
if (조건식1) {
// 조건식1의 연산결과가 참(true)일 때 수행될 문장들을 적는다.
} else if (조건식2) {
// 조건식2의 연산결과가 참(true)일 때 수행될 문장들을 적는다.
} else if (조건식3) {
// 조건식3의 연산결과가 참(true)일 때 수행될 문장들을 적는다.
} else {
// 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
}
- 첫 번째 조건식부터 순서대로 평가해서 결과가 참인 조건식을 만나면, 해당 블럭{}만 수행하고 'of-else'문 전체를 벗어난다.
- 여러 개의 else if를 사용할 수 있다.
✨ 예제 4
import java.util.*;
public class FlowEx4 {
public static void main(String[] args) {
int score = 0; // 점수 저장 변수
char grade = ' '; // 학점 저장 변수. 공백 초기화.
System.out.println("점수를 입력하세요. >");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 score에 저장
if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
} else if (score >= 70) {
grade = 'C';
} else {
grade = 'D';
}
System.out.println("당신의 학점은" + grade + "입니다.");
}
=> 점수가 90점 미만이고, 80점 이상인 사람에게 B학점을 주는 조건에서 '80 <= score && score <90' 로 적지 않고 'score >= 80'이라고 적는 이유는 첫 번째 조건에서 'score >= 90'이 거짓이기 때문이다.
if (조건식1) {
// 조건식1의 연산결과가 참일 때 수행될 문장들을 적는다.
if (조건식 2) {
// 조건식1과 조건식2가 모두 참일 때 수행될 문장들을 적는다.
} else {
// 조건식1이 참이고, 조건식2가 거짓일 때 수행될 문장들을 적는다.
}
} else {
// 조건식1이 거짓일 때 수행되는 문장들
}
✨ 예제 5
import java.util.*;
public class FlowEx5 {
public static void main(String[] args) {
int score = 0;
char grade = ' ', opt = 0;
System.out.println("점수를 입력해주세요. ");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt();
System.out.printf("당신의 점수는 %d입니다.%n", score);
if (score >= 90) {
grade = 'A';
if (score >= 98) {
opt = '+';
}
else {
opt = '-';
}
} else if (score >= 80) {
grade = 'B';
if (score >= 88) {
opt = '+';
} else {
opt = '-';
}
} else {
grade = 'C';
}
System.out.printf("당신의 학점은 %c%c입니다.", grade, opt);
}
}
switch (조건식) {
case 값1 :
// 조건식의 결과가 값1과 같을 경우 수행될 문장들을 적는다.
break;
case 값2 :
// 조건식의 결과가 값2와 같을 경우 수행될 문장들을 적는다.
break; // switch문을 벗어난다.
default :
// 조건식의 결과와 일치하는 case문이 없을 때 수행될 문장들을 적는다.
}
- switch문은 여러 개의 경우의 수를 처리하는데 적합하다. 다만, 제약조건이 있다.
- 조건식의 결과와 일치하는 case문으로 이동해 문장들을 수행한다.
- 조건식의 결과와 일치하는 case문이 하나도 없는 경우에는 default문으로 이동한다.
- break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.
- switch문도 중첩이 가능하다.
- case문은 한 줄에 하나씩 쓰던, 한 줄에 붙여서 쓰던 상관 없다.
case 3: case 4:
case 3: case 4:
✨ 예제 6
import java.util.*;
public class FlowEx6 {
public static void main(String[] args) {
System.out.println("당신의 주민번호를 입력하세요. (123456-1234567)");
Scanner scanner = new Scanner(System.in);
String regNo = scanner.nextLine();
char gender = regNo.charAt(7); //입력받은 번호의 8번째 문자를 gender에 저장
switch (gender) {
case '1': case '3':
System.out.println("당신은 남자입니다.");
break;
case '2': case '4':
System.out.println("당신은 여자입니다.");
}
}
}
참고
자바의 정석(저자: 남궁성)
자바의 조건문의 원리는 파이썬과 비슷해서 이해가 쉬웠다. 자바 문법을 익히기 위해 예제를 많이 연습했다. 괄호쓰기가 아직 어렵다. 파이썬보다 더 까다롭지만 점점 자바가 재밌어진다!
내일은 반복문 중 for문을 들어가겠다.