조건문
프로그래밍을 하다 보면 조건을 판단해서 주어진 조건에 맞게 코딩해야 할 경우가 생기게 된다. 이렇게 조건을 판단하여 해당 조건에 맞는 기능을 수행하도록 도와 주는 것이 바로 조건문이다.
if문
if문은 가장 기본이 되는 조건문이고 조건식과 괄호로 구성되어 조건식이 참True 이면 괄호안의 코드가 수행된다.
// 조건식이 참True일 때 수행될 코드
}
System.out.println("A학점입니다.")
}
위의 코드를 보면 조건식 ( score > 90 ) 이 참이면 괄호 안의 코드가 수행되어 콘솔창에 "A학점입니다"라고 찍히게 되고 조건에 맞지 않으면(거짓False)이면 if문이 동작하지 않고 다음 코드로 넘어가게 된다.
비교연산자
조건문을 사용 하는 경우는 자료형Boolean 보다는 비교 연산자(<, >, ==, !=, >=, <=)를 쓰는 경우가 많다. 다음은 비교연산자를 나열한 것 이다.
| 비교연산자 | 설명 |
|---|---|
| x < y | x가 y보다 작다 |
| x > y | x가 y보다 크다 |
| x == y | x와 y가 같다 |
| x != y | x와 y가 같지 않다 |
| x >= y | x가 y보다 크거나 같다 |
| x <= y | x가 y보다 작거나 같다 |
조건연산자
또 조건문 조건 판단에 쓰이는 것으로 조건연산자 and, or, not 이 있다.
x && y : x와 y 모두 참이어야 참이다.
!x : x가 거짓이면 참이다.
자주 사용되는 조건식 응용
| 조건식 | 설명 |
|---|---|
| 50 <= x && x <= 100 | x가 50이상 100이하일 때 참이다. |
| x < 0 || x > 50 | x가 0미만이거나 50보다 클 때 참이다. |
| x%4 == 0 && x%5 != 0 | x가 5의 배수이지만 5의 배수는 아닐 때 참이다 |
| char == 'd' || char == 'h' | char이 'd' 이거나 'h' 일 때 참이다. |
| 'A' <= char && char <= 'Z' | char이 대문자 일 때 참이다. |
| 'a' <= char && char <= 'z' | char이 소문자 일 때 참이다. |
| '0' <= char && char <= '9' | char이 숫자 일 때 참이다. |
| strval.equals("DEAN") | strval의 문자열이 "DEAN"일 때 참이다. |
| strval.equalsIgnoreCase("DEAN") | strval의 문자열이 대소문자 구분 없이 "DEAN"일 때 참이다. |
예제
-
Code
IfExample.javaimport java.util.Scanner; public class IfExample { int score; public void ifStatement(){ System.out.println("점수를 입력해 주세요"); Scanner scanner = new Scanner(System.in); String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장 score = Integer.parseInt(tmp); // 입력받은 tmp의 문자열을 숫자로 변환 if(score>90){ System.out.println("A 입니다."); }else if(score>80){ System.out.println("B 입니다."); }else if(score>70){ System.out.println("C 입니다."); }else{ System.out.println("F 입니다."); } } -
Code
IfExampleMain.javapublic class IfExampleMain { public static void main(String[] args) { IfExample result =new IfExample(); result.ifStatement(); } -
Result
중첩 if문
중첩 if문은 if문 안에 또 다른 if문이 있는 것으로 어떤 조건 내에서 또 다른 조건이 필요할 때 사용한다.
예제
-
Code
NestingIfExample.javaimport java.util.Scanner; public class NestingIfExample { int score; char grade; char opt; public void nestingIfStatement(){ System.out.println("점수를 입력해 주세요"); Scanner scanner = new Scanner(System.in); String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장 score = Integer.parseInt(tmp); // 입력받은 tmp의 문자열을 숫자로 변환 if(score>90){ grade = 'A'; if(score>95){ opt = '+'; } else { opt = '-'; } }else if(score>80){ grade = 'B'; if(score>85){ opt = '+'; } else { opt = '-'; } }else if(score>70){ grade = 'C'; if(score>75){ opt = '+'; } else { opt = '-'; } }else{ grade = 'F'; } System.out.printf("%c%c 입니다.", grade, opt); } } -
Code
NestingIfExampleMain.javapublic class NestingIfExampleMain { public static void main(String[] args) { NestingIfExample result =new NestingIfExample(); result.nestingIfStatement(); } } -
Result
switch문
if문은 조건식의 결과가 참 또는 거짓 밖에 없기 때문에 조건의 경우가 많아질수록 if문을 계속 추가해야하므로 복잡해지고 처리시간도 증가하게 되므로 조건이 많을 때는 switch문을 사용한다. switch문은 단 하나의 조건식으로 많은 경우의 수를 만들 수 있다. 하지만 switch문은 제약조건이 있기 때문에 switch문은 if문으로 항상 바꿀 수 있지만 if문을 switch문으로 바꿀 수 없는 경우도 있다.
switch문의 구조는 아래와 같다.
case 입력값1 :
// 입력변수가 값1과 같을 때 수행될 코드
break;
case 입력값2 :
// 입력변수가 값2와 같을 때 수행될 코드
break;
default :
// 입력변수와 같은 값이 없을 때 수행될 코드
}
switch문은 조건식을 먼저 계산한 다음 결과와 일치하는 case문으로 이동하여 그 안의 코드를 수행하는데 break문을 만나게 되면 전체 switch문을 빠져 나가게 된다.
만약 조건식의 결과와 일치하는 case문이 없을 경우에는 default문으로 이동한다.
계산순서 이미지 들어가야 됨 ㅎㅎ
switch문의 제약조건
예제
-
Code
SwitchExample.javaimport java.util.Scanner; public class SwitchExample { int score; char grade; public void switchStatement() { System.out.println("점수를 입력해 주세요(1~100)"); Scanner scanner = new Scanner(System.in); String tmp = scanner.nextLine(); // 화면을 통해 입력받은 내용을 tmp에 저장 score = Integer.parseInt(tmp); // 입력받은 tmp의 문자열을 숫자로 변환 switch(score/10){ case 10 : case 9 : grade = 'A'; break; case 8 : grade = 'B'; break; case 7 : grade = 'C'; break; default : grade = 'F'; } System.out.println(grade + " 입니다."); } } -
Code
SwitchExampleMain.javapublic class SwitchExampleMain { public static void main(String[] args) { SwitchExample result =new SwitchExample(); result.switchStatement(); } } -
Result