JAVA/조건문과 반복문
조건문과 반복문_1
whale_it
2018. 8. 14. 11:53
chap 04 조건문과 반복문
- 제어문 : 프로그램의 흐름(flow)을 바꾸는 역할
- 조건문 : 조건에 따라 문장이 수행
- 반복문 : 특정 문장을 반복 수행
1. 조건문 - if
swhich
1.1 if 문
if(조건식) {
// 조건식이 참이면 실행
}
조건식 : 반드시 true 이거나 falas
조건식 | 조건식이 참일 조건 |
---|---|
90 <= x && x <= 100 | 정수 x 가 90이상 100이하 일때 |
x < 0 \|\| x > 100 | 정수 x 가 0보다 작거나 100보다 클 때 |
x % 3 == 0 || x %2 != 0 | 정수 x 가 3의 배수지만, 2의 배소는 아닐 때 |
package ch04;
class FlowEx01 {
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)");
System.out.println();
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)");
}
}
package ch04;
import java.util.*; // Scanner클래스를 사용하기 위해 추가
class FlowEx02 {
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.println("입력하신 숫자는 "+ input +"입니다.");
} // main의 끝
}
1.2 if - else 문
if(조건식){
// 조건이 참 일때 수행
}else{
// 조건식이 거짓 일때 수행
}
package ch04;
import java.util.*; // Scanner클래스를 사용하기 위해 추가
class FlowEx03 {
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입니다.");
} else { // input!=0인 경우
System.out.println("입력하신 숫자는 0이 아닙니다.");
}
} // main의 끝
}
1.3 if-else- if 문
if(조건식1){
// 조건식1이 참 일때 수행
}else if(조건식2){
// 조건식2이 참 일때 수행
}else if(조건식3){
// 조건식3이 참 일때 수행
}else if(조건식4){
// 조건식4이 참 일때 수행
}else {
어느 조건식도 만족하지 않을 때
}
package ch04;
import java.util.*;
class FlowEx04 {
public static void main(String[] args) {
int score = 0; // 점수를 저장하기 위한 변수
char grade =' '; // 학점을 저장하기 위한 변수. 공백으로 초기화한다.
System.out.print("점수를 입력하세요.>");
Scanner scanner = new Scanner(System.in);
String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
score = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
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 +"입니다.");
}
}
1.4 중첩 if 문
if(조건식1){
if(조건식2){
// 조건식1이 참이고 조건식 2가 참인경우
}else{
// 조건식1만 참인 경우
}
}else{
조건식 1이 거짓인 경우
}
package ch04;
import java.util.*;
class FlowEx05 {
public static void main(String[] args) {
int score = 0;
char grade = ' ';
char opt = '0';
System.out.print("점수를 입력해주세요.>");
Scanner scanner = new Scanner(System.in);
String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
score = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
System.out.printf("당신의 점수는 %d입니다.", score);
if (score >= 90) { // score가 90점 보다 같거나 크면 A학점(grade)
grade = 'A';
if (score >= 98) { // 90점 이상 중에서도 98점 이상은 A+
opt = '+';
} else if (score < 94) { // 90점 이상 94점 미만은 A-
opt = '-';
}
} else if (score >= 80){ // score가 80점 보다 같거나 크면 B학점(grade)
grade = 'B';
if (score >= 88) {
opt = '+';
} else if (score < 84) {
opt = '-';
}
} else { // 나머지는 C학점(grade)
grade = 'C';
}
System.out.printf("당신의 학점은 %c%c입니다.%n", grade, opt);
}
}
1.5 switch 문
- 단 하나의 조건식으로 많은 경우의 수 처리
- 표현이 간결 하나 제약 조건이 있음
- 조건식 계산 -> 조건식 결과와 일치하는 case 문으로 이동 -> 문장 수행 -> break 문에서 끝남
제약 조건
- 조건식 결과는 정수, 문자 또는 문자열(JDK1.7에 추가됨) 이어야 함
package ch04;
import java.util.*;
class FlowEx06 {
public static void main(String[] args) {
int month = 0;
System.out.print("현재 월을 입력하세요.>");
Scanner scanner = new Scanner(System.in);
String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장
month = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
switch(month) {
case 3:
case 4:
case 5:
System.out.println("현재의 계절은 봄입니다.");
break;
case 6: case 7: case 8:
System.out.println("현재의 계절은 여름입니다.");
break;
case 9: case 10: case 11:
System.out.println("현재의 계절은 가을입니다.");
break;
default:
// case 12: case 1: case 2:
System.out.println("현재의 계절은 겨울입니다.");
}
} // main의 끝
}