728x90
1. 조건문과 반복문 ⇒ 제어문 flow control statement
- 조건문은 조건을 만족할 때만 {} 를 수행(0~1 번) 단, 조건문의 경우는 조건을 만족하지 않는다면 한번도 수행되지 않을 수 있음
- 반복문은 조건은 만족하는 동안 {}를 수행(0~n 번)
2-1) IF 문
조건식이 참true 일때 괄호 {} 안의 문장들을 수행한다.
if(조건식){
// 조건식이 참 true 일 때 수행될 문장
}
##################
예시
if(score > 90){
System.out.println("A 입니다");
}
2-2) 조건식의 다양한 예
조건식 | 조건식이 참일 조건 |
90 <= x && x<=100 | 정수 x 가 90 이상 100이하 일 때 |
x < 0 || x > 100 | 정수 x 가 0보다 작거나 100보다 클 때 |
x%3 == 0 && x%2!=0 | 정수 x가 3의 배수지만, 2의 배수는 아닐 때 |
ch=='y' || ch =='Y' | 문자 ch가 'y' 또는 'Y'일 때 |
'A' <= ch && ch <='Z' | 문자 ch가 대문자 일 때 |
str.equals("yes") | 문자열 str 의 내용이 yes 일 때 단, 대소문자 구분 |
str.equalsIgnoreCase("yes") | 문자열 str 의 내용이 yes 일 때 단, 대소문자 구분 X |
2-3) 블럭 { }
조건식과 반복문에서 블럭 { } 의 사용은 여러 문장을 하나로 묶어주기 위한 것이다.
즉 { } 를 사용함으로써 조건식의 경우 '조건'이 되는 여러 문장을 하나로 묶어주는 위함이고, 반복문의 경우 '반복'이 필요한 여러 문장을 하나로 묶어주기 위함이다.
단! 블럭 안쪽 문장은 탭 Tab 를 사용해서 문장을 들여쓰기 해주는게 좋다.
3. if-else 문
둘 중 하나 - 조건식이 참일 때와 거짓일 때를 나눠서 처리하는 조건문
if(조건식){
// 조건식 참 true
}else{
// 조건식 거짓 false
}
4. if-else if 문
여러 개 중의 하나 - 여러 개의 조건 식을 포함한 조건 식. 결과가 참일 조건식을 만날 때까지 첫 번째 조건식부터 순서대로 조건식을 진행한다. 즉 초건식 1이 참이면 그대로 조건식 1의 문장을 수행하고, 조건식1이 거짓인 경우 다음 조건식2 , 조건식2가 거짓인 경우 조건식3 을 수행한다.
- 이때 수행되는 조건식은 1~3 중 1개만 수행되며, 마지막 else 문의 경우 생략 가능하다.
if(조건식1){
// 조건식 1의 연산결과가 참일 때 수행될 문장
}else if(조건식2){
// 조건식 2의 연산결과가 참일 때 수행될 문장
}else if(조건식3){
// 조건식 3의 연산결과가 참일 때 수행될 문장
}else{
// 위의 어느 조건식도 만족하지 않을 때 수행될 문장
}
아래처럼 활용 가능
static void else_if(){
int score = 0; // 점수 저장을 위해 변수를 0으로 초기화
char grade = ' '; // 학점을 저장하기 위해 변수를 공백으로 초기화
System.out.println("점수를 입력하세요");
Scanner scan = new Scanner(System.in);
score = scan.nextInt(); // scanner 를 통해 정수값 score 저장
if(90<=score && score <=100) { // 학점은 100 이하여야 함
grade='A';
System.out.println("당신의 학점은 "+grade+ " 입니다");
}else if(80<=score && score<90) {
grade='B';
System.out.println("당신의 학점은 "+grade+ " 입니다");
}else if(70<=score && score<80) {
grade='C';
System.out.println("당신의 학점은 "+grade+ " 입니다");
}else if(0<=score && score<70) {
grade='D';
System.out.println("당신의 학점은 "+grade+ " 입니다");
}else{ // 학점에 100을 초과하는 값 혹은 0 미만인 값이 오는 경우 아래를 출력
System.out.println("해당 점수는 없는 점수입니다");
System.out.println("재입력이 필요합니다");
}
}
5. 중첩 if 문 - if 문 안의 if
if 문 안에 if 문을 써넣음으로써 전체 문장을 짧게 만들거나 조건식1을 만족하는 상태에서 다른 조건을 넣을 때 사용한다.
if(조건식){
if(조건식2){
// 조건식1과 조건식2가 모두 true 일 때 수행될 문장들
} else{
// 조건식1은 true이고, 조건식 2가 flase 일 때 수행되는 문장들
}else{
// 조건식 1이 false 일 때 수행되는 문장들
}
아래처럼 활용 가능!!
static void else_if2() {
int score = 0; // 점수 저장을 위해 변수를 0으로 초기화
char grade = 'D'; // 기본 학점을 D로 넣음으로써 grade A B C 의 조건식을 만족하지 않는 경우 그냥 D가 출력되도록 함
System.out.println("점수를 입력하세요");
Scanner scan = new Scanner(System.in);
score = scan.nextInt();
if(0<=score && score <=100) { // score 가 0 이상 100 이하인 경우 아래 조건식 실행
if(90<=score && score <=100) {
grade='A';
}else if(80<=score && score<90) {
grade='B';
}else if(70<=score && score<80) {
grade='C';
}
System.out.println("당신의 학점은 "+grade+ " 입니다");
}else { // score 가 0 미만이거나 100 초과인 경우 아래 문장 실행
System.out.println("해당 점수는 없는 점수입니다");
}
}
6. switch문
- 처리해야 하는 경우의 수가 많을때 유용한 조건문 ⇒ 경우의 수가 많을 때는 보통 if-else if 보다 switch문이 더 좋음
- switch 문의 경우 break; 가 필수! 만약 break 가 없는 경우 break 를 만날 때까지 switch문이 계속 이어짐
switch(조건식){
case 값1:
// 조건식의 결과가 값1과 같을 경우 수행될 문장
break;
case 값2:
// 조건식의 결과가 값2와 같을 경우 수행될 문장
break;
default:
// 조건식의 결과가 case 의 값과 일치되는 경우가 없을 때 수행될 문장
swtich 문 사용 + 버퍼 사용하여 입출력받기
public class Practice13 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 버퍼로 읽고
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 버퍼로 쓰기
String str = br.readLine();
br.close();
switch (str) { // str이 1을 입력받는 경우
case "1":
bw.write("1번 입니다!"); // 여기 출력
//bw.flush();
break;
case "2": // str 이 2를 입력받는 경우
bw.write("2번 입니다"); // 여기 출력 다만 여기는 break; 문장이 없음
bw.newLine();
//bw.flush();
case "3":
bw.write("3번 입니다");
}
bw.flush(); // bufferwriter 정리 및 초기화
bw.close();
}
}
※ if - else if 와 switch 문의 차이점
- if 문 안의 조건식은 true 또는 false 둘 중 하나만 올 수 있다. 때문에 조건에 따른 값이 여러개인 경우 여러번 조건식을 넣어서 만들어야 하는데, switch 문 같은 경우 조건식 안에 정수 & 문자열 모두 올 수 있기 때문에 훨씬 효율적으로 문장을 짤 수 있다.
※ swtich 문의 제약 조건
- switch 문의 조건식 결과는 정수 또는 문자열이어야 한다.
- case문의 값은 정수 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다. ⇒ 변수 X
int num, result; final int ONE = 1; switch(result){ case '1': // 가능!, 문자 리터럴(문자 1 == 정수 49) case ONE: // 가능!, FINAL 로 정수 상수로 지정해줌 case "YES" // 가능! , 문자열 리터럴 , jdk 1.7부터 허용 case num: // 변수는 불가능!! case 1.0: // 실수는 불가능!! 정수만 가능!
'Java - 기본기' 카테고리의 다른 글
8. 조건문과 반복문 기초&활용(3) - break, contiune, 이름붙은 반복문(feat. 미니 게임 만들기 & 제곱근, 로그 계산기) (0) | 2021.10.04 |
---|---|
7. 조건문과 반복문 기초&활용 (2) : for, while, do ~ while (0) | 2021.10.01 |
Java 입출력(I/O), 스트림(Stream), 버퍼(Buffer) 개념 및 사용법 (2) | 2021.09.26 |
5. 반올림-Math.round(), 비교, 조건, 논리, 대입, 복합 대입 연산자 (0) | 2021.09.16 |
4. 증감 연산자, 부호 연산자, 형변환 , 자동 형변환 + 아스키코드 (0) | 2021.09.13 |
댓글