1. 조건문이란? - if, switch
'조건문'은 조건식과 문장을 포함하는 블럭{}으로 구성되어 있으며, 조건문은 조건식의 연산결과에 따라 실행할 문장이 달라진다. 조건문은 if문과 switch문이 있으며, 주로 if문이 많이 사용된다.
2. if문
if문은 가장 기본적인 조건문이며, 조건식이 참(true)이면 괄호{} 안의 문장을 수행한다.
if (score > 60) { // 조건식 (score > 60)
System.out.println("합격입니다."); // 조건식이 true일 때 수행될 문장
}
위 조건식의 결과는 'true'이므로 if문 괄호{} 안의 문장이 실행된다. 만일 조건식의 결과가 'false'이면 괄호{} 안의 문장은 수행되지 않을 것이다.
- 블럭{}
괄호{}를 이용해서 여러 문장을 하나의 단위로 묶을 수 있는데, 이것을 '블럭(block)'이라고 한다.
* 블럭 내의 문장들은 탭(tab)으로 들여쓰기(indentation)를 해주는 게 좋다.
if (score > 60) { // 블럭의 시작
System.out.println("합격입니다.");
} // 블럭의 끝
블럭 내의 문장이 하나뿐 일 때는 괄호{}를 생략할 수 있다.
if (score > 60)
System.out.println("합격입니다."); // 괄호{}는 생략 가능
if (score > 60) System.out.println("합격입니다."); // 한 줄로 쓰는 것도 가능
// ========================================================================
if (score > 60)
System.out.println("합격입니다."); // if문에 속한 문장
System.out.println("축하드립니다."); // if문에 속한 문장이 아님
- 예제 FlowEx1.java
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");
if(!(x==0)) System.out.println("!(x==0)");
if(!(x!=0)) System.out.println("!(x!=0)");
x = 1;
System.out.printf("x=%d 일 때, 참인 것은?%n", x);
if(x==0) System.out.println("x==0");
if(x!=0) System.out.println("x!=0");
if(!(x==0)) System.out.println("!(x==0)");
if(!(x!=0)) System.out.println("!(x!=0)");
}
}
3. if-else문
'else'는 조건식의 결과가 거짓일 때, else 블럭의 문장을 수행하라는 뜻이다.
if (조건식) {
// 조건식이 참(true)일 때 수행될 문장들을 적는다.
} else {
// 조건식이 거짓(false)일 때 수행될 문장들을 적는다.
}
if (input == 0) {
System.out.println("0입니다.");
}
if (input != 0) {
System.out.println("0이 아닙니다.");
}
// 위의 식과 아래의 식은 같다.
if (input == 0) {
System.out.println("0입니다.");
} else {
System.out.println("0이 아닙니다.");
}
* 두 조건식은 어느 한 쪽이 참이면 다른 한 쪽이 거짓인 상반된 관계에 있기 때문에 변경 가능한 것
- 예제 FlowEx3.java
public class FlowEx3 {
public static void main(String[] args) {
System.out.print("숫자를 하나 입력하세요.>");
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 input에 저장
System.out.print("입력하신 숫자는 0");
if (input == 0) {
System.out.println("입니다.");
} else { // input != 0인 경우
System.out.println("이 아닙니다.");
}
}
}
4. if-else if문
한 문장에 여러 개의 조건식을 써야 하는 경우에는 'if-else if' 문을 사용하면 된다.
if (조건식1) {
// 조건식1의 결과가 참(true)일 때 수행될 문장들을 적는다.
} else if (조건식2) {
// 조건식2의 결과가 참(true)일 때 수행될 문장들을 적는다.
} else if (조건식3) { // 여러 개의 else if를 사용할 수 있다.
// 조건식3의 결과가 참(true)일 때 수행될 문장들을 적는다.
} else { // 생략 가능
// 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다.
}
- 예제 FlowEx4.java
import java.util.Scanner;
public class FlowEx4 {
public static void main(String[] args) {
int score = 0; // 점수를 저장하기 위한 변수
char grade= ' '; // 학점을 저장하기 위한 변수. 공백으로 초기화한다.
System.out.print("점수를 입력하세요.>");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 score에 저장
if(score >= 90) { // score가 90점 보다 같거나 크면 A학점
grade = 'A';
} else if(score >= 80) { // score가 80점 보다 같거나 크면 B학점
grade = 'B';
} else if(score >= 70) { // score가 70점 보다 같거나 크면 C학점
grade = 'C';
} else { // 나머지는 D학점
grade = 'D';
}
System.out.println("당신의 학점은 " + grade + "입니다.");
if(score < 70) {
grade = 'D';
} else if(score <= 70) {
grade = 'C';
} else if(score <= 80) {
grade = 'B';
} else {
grade = 'A';
}
System.out.println("당신의 학점은 " + grade + "입니다.");
}
}
5. 중첩 if문
if문의 불럭 내에 또 다른 if문을 포함시키는 것이 가능한데, 이것을 중첩 if문이라고 부른다.
* 중첩 if문 안에서 else-if도 사용 가능하다.
if (조건식1) {
// 조건식1이 참(true)일 때 수행될 문장들을 적는다.
if (조건식2) {
// 조건식1과 조건식2가 모두 참(true)일 때 수행될 문장들을 적는다.
} else
// 조건식1이 참(true)이고, 조건식2가 거짓(false)일 때 수행될 문장들을 적는다.
} else {
// 조건식1이 거짓(false)일 때 수행될 문장들을 적는다.
}
- 예제 FlowEx5.java
import java.util.Scanner;
public class FlowEx5 {
public static void main(String[] args) {
int score = 0;
char grade = ' ', opt = '0';
System.out.print("점수를 입력해주세요. >");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt(); // 화면을 통해 입력받은 점수를 score에 저장
System.out.printf("당신의 점수는 %d입니다.%n", score);
if (score >= 90) { // score가 90점 보다 같거나 크면 A학점(grade)
grade = 'A';
if (score >= 98) {
opt = '+'; // 90점 이상 중에서도 98점 이상은 A+
} else if (score < 94) {
opt = '-'; // 90점 이상 94점 미만은 A-
}
} else if (score >= 80) { // score가 80점 보다 같거나 크면 B학점(grade)
grade = 'B';
if (score >= 88) {
opt = '+'; // 80점 이상 중에서도 88점 이상은 B+
} else if (score < 84) {
opt = '-'; // 80점 이상 84점 미만은 B-
}
} else {
grade = 'C'; // 나머지는 C학점(grade)
}
System.out.printf("당신의 학점은 %c%c입니다.%n", grade, opt);
}
}
참고문헌 : 남궁성(2016), Java의 정석, 도우출판