조건문
- 조건식 결과에 따라 실행할 문장이 달라지는 문(statement)
- if문과 switch문으로 구분됨
if문(단일 if문)
- 가장 단순한 조건문
- 조건식 판별 결과가 true일 때 특정 문장(블록)을 추가로 실행
기본문법
if(조건식) {
//조건식 판별 결과가 true일 때 실행할 문장들..
문장2;
}
문장3;
=> 조건식 판별 결과 true : 문장1 -> 조건식(true) -> 문장2 -> 문장3 => 조건식 판별 결과 false : 문장1 ->조건식(false) -> 문장3 (if문을 빠져나옴)
정수 num이 5보다 작은가?
System.out.println("프로그램 시작!"); //문장1
int num = 1; // 문장1
//정수 num이 5보다 작은가?
if(num<5) { // 조건식(질문)
// 조건식 판별 결과가 true일 때 수행할 문장들..
System.out.println("num이 5보다 작다!"); //문장2 : 참이면 실행, 거짓이면 실행x
}
//if문이 종료된 후 실행할 문장 (조건식과 무관)
System.out.println("프로그램 종료!"); //문장3
정수 num2의 절대값을 계산하여 출력
int num2 = 5; // 문장1
//num2가 0보다 작을 때 (음수일 때)
if(num2 < 0) { //조건식
// 조건식 판별 결과가 true일 때(음수일 때) 실행할 문장들..
// 변수 num2에 음수 부호(-)를 붙여서 다시 변수 num2에 저장
num2 = -num2; // num2의 값 -(-5)이 num1에 저장
System.out.println("음수를 양수로 변환!"); //문장2
}
System.out.println("num의 절대값 : " + num2); //문장3
예제
- "마산으로 걸어서 출발" 출력
- money 변수 선언, 초기값 2000(원)
- 주현이가 돈이 5천원 이상 있다면 "택시타고 가기!" 출력
- 만약, 돈이 5천원 미만이라면 "버스타고 가기!" 출력
- "마산에 도착" 출력
System.out.println("마산으로 걸어서 출발!");
int money = 2000;
if(money >= 5000) {
System.out.println("택시타고 가기!");
}
if(money < 5000) {
System.out.println("버스타고 가기!");
}
System.out.println("마산에 도착!");
}
초기값이 10000(원)이었다면 “택시타고 가기!” 가 출력됨
if문 조건식에 비교연산자, 논리연산자 등을 조합하여 활용 가능
1. 나이(age)를 입력받아(변수 초기화) 20대인지 판별
- 20대란? 나이(age)가 20이상이고 나이(age)가 29이하(30미만)
- if문을 사용하여 나이가 20대일 경우 " 당신은 20대입니다!" 출력
int age = 21;
if(age>=20 && age<=29) {
System.out.println("당신은 20대입니다!");
}
2. 나이(age)를 입력받아 놀이동산 무료입장 여부 판별
- 무료입장 대상 : 나이(age)가 5세 미만이거나 나이(age)가 65세 이상
int age2 = 70;
if(age2<5 || age2>=65) {
System.out.println("놀이동산 무료입장 가능!");
}
if-else문
- 조건식 판별 결과가 true일 때와 false일 때 서로 다른 블록을 실행
- 삼항연산자와 유사한 형태로 수행되나 삼항연산자보다 유연함 (조건식 판별 결과에 따라 실행 가능한 문장이 더 다양함)
- if문 블록은 조건식 결과가 true일 때 실행하고, else문 블록은 조건식 결과가 false일 때 실행함 => 둘 중 하나의 블록만 실행
<기본문법>
문장1;
if(조건식) {
문장2; // 조건식 결과가 true일 때 실행할 문장들..
} else {
문장3; // 조건식 결과가 false일 때 실행할 문장들..
}
문장4;
- 조건식 판별 결과 true
- 문장1 -> 조건식(true) -> 문장2 -> 문장4
- 조건식 판별 결과 false
- 문장1 -> 조건식(false) -> 문장3 -> 문장4
정수 num에 대한 절대값 계산
int num = -5; //문장1
if(num < 0) { //조건식
//조건식 결과가 true일 때 실행할 문장들...
System.out.println("음수이므로 양수로 변환!"); //문장2
num = -num;
} else { // 조건식 결과가 false일 때 실행할 문장들..
System.out.println("양수이므로 변환 생략!"); //문장3
}
System.out.println("num의 절대값: " + num); //문장4
정수 num2에 대해 홀수, 짝수(0 포함) 판별
int num2= 27;
//짝수 : 정수 num2를 2로 나눈 나머지가 0일 경우(0과 같을 경우)
//홀수 : 정수 num2를 2로 나눈 나머지가 1일 경우(1과 같을 경우)
if(num2%2 == 0) { // 홀수일 경우 //num2 % 2 > 0과 동일한 결과
System.out.println(num2+"은(는) 짝수!");
} else { // 홀수가 아닐 경우 = 짝수(또는 0)일 경우
System.out.println(num2+"은(는) 홀수!");
}
예제
- "마산으로 걸어서 출발" 출력
- money 변수 선언, 초기값 10000(원)
- 주현이가 돈이 5천원 이상 있다면 "택시타고 가기!" 출력
- 만약, 돈이 5천원 미만이라면 "버스타고 가기!" 출력
- "마산에 도착" 출력
int money = 10000;
System.out.println("마산으로 걸어서 출발");
if(money >= 5000) {
System.out.println("택시타고 가기!");
} else {
System.out.println("버스타고 가기!");
}
System.out.println("마산에 도착!");
1. 나이(age)를 입력받아(변수 초기화) 20대인지 판별
- 20대란? 나이(age)가 20이상이고 나이(age)가 29이하(30미만)
- if문을 사용하여 나이가 20대일 경우 " 당신은 20대입니다!" 출력
int age = 21;
if(age>=20 && age<=29) {
System.out.println("20대 입니다.");
} else {
System.out.println("20대가 아닙니다.");
}
2. 나이(age)를 입력받아 놀이동산 무료입장 여부 판별
- 무료입장 대상 : 나이(age)가 5세 미만이거나 나이(age)가 65세 이상
age = 70;
if(age<5 || age>=65) {
System.out.println("놀이동산 무료입장 가능!");
} else {
System.out.println("놀이동산 무료입장 불가능!");
}
3. 문자 ch가 대문자일때 "대문자!" 출력, 아니면 "대문자 아님!" 출력
- 대문자란? 'A'(65) 이상이고 'Z'(90) 이하인 문자
char ch = 'A';
if(ch >=65 && ch <=90) { //ch >= 'A' && ch <= 'Z' 식과 동일
System.out.println(ch + ": 대문자!");
} else {
System.out.println(ch + ": 대문자 아님!");
}
4. 문자 ch가 소문자일때 "소문자!" 출력 후, 대문자로 변환 후 출력
- 아니면, "소문자 아님!" 출력
- => 소문자란? 'a'(97) 이상이고 'z'(122)이하인 문자
- 대문자란? 'A'(65) 이상이고 'Z'(90) 이하인 문자
- hint. 소문자와 대문자의 차이는 32이다.
ch = 'z';
if(ch >=65 && ch<=90) { //ch >= 'a' && ch <= 'z' 식과 동일
System.out.println(ch + ": 소문자 아님!");
} else {
System.out.println(ch + ": 소문자!");
// => 소문자 → 대문자로 변환
// => 소문자와 대문자의 차이는 32만큼이므로 ch값을 32만큼 빼면 된다.
ch -= 32; // ch = (char)(ch -32); 식과 동일
System.out.println("대문자 변환: " + ch);
}
⇒ 소문자 → 대문자로 변환
⇒ 소문자와 대문자의 차이는 32만큼이므로 ch값을 32만큼 빼면 된다.
다중 if - else if문(if ~ else if ~ else 문)
- 두 가지 이상의 조건식을 사용하여 세 가지 이상의 경우의 수 판별
- 기본 if문으로 첫 번째 조건을 설정하고, else if 문으로 두 번째 이후의 조건을 설정한다.
- 모든 조건이 만족하지 않을 때 실행할 문이 있을 경우 문장의 마지막에 else 문 사용
- if문 비교는 위에서 아래로 차례대로 비교를 수행한다. => 비교 범위가 좁은 조건식부터 비교를 수행해야 한다!
기본문법
if(조건식1) {
// 조건식1의 결과가 true일 때
} else if(조건식2) {
// 조건식1의 결과가 false이고, 조건식2의 결과가 true일 때
} else if(조건식n) {
// 조건식1 ~ n-1의 결과가 false이고, 조건식n의 결과가 true일 때
} else {
// 위의 모든 조건식(n까지) 결과가 false 일 때
// 마지막 실행 문장..
// 마지막 else문은 생략 가능
}
int num=0;
if(num>0) { // 양수일 때
System.out.println(num + ": 양수!");
} else if (num<0) { // 음수일 때
System.out.println(num + ": 음수!");
} else if(num ==0) { //else를 생략하고 한번 더 조건문으로 물어볼 수 있음
System.out.println(num + ": 0!");
}
⇒ else를 생략하고 한번 더 조건문으로 물어볼 수 있음
정수형 변수 num에 대해 홀수, 짝수 판별
- 단, 홀수와 짝수가 아닌 0을 별도로 판별
num = 0;
//if문은 위에서부터 차례대로 조건을 검사한다!
if((num % 2) == 1) { // 홀수일 경우
System.out.println(num + ": 홀수!");
} else if ((num % 2) == 0) { // 짝수일 경우
System.out.println(num + ": 짝수!");
} else { //홀수도 짝수도 아닐 경우 (0)
System.out.println(num + ": 0!");
}
⇒ 주의! 0은 2로 나눈 나머지가 0이므로 짝수 판별 식에서 true가 됨
따라서, 0을 출력하는 문장은 실행될 수 없다!
=> 해결책 : 최소한 0을 판별하는 문장(0과 같다) 이 짝수 판별 문장보다 위쪽에 위치해야 한다!! (홀수 판별식의 위치는 무관함)
⇒ 위 코드를 짝수 판별 전 0일 경우를 먼저 실행해보면,
num = 0;
if((num % 2) == 1) { // 홀수일 경우
System.out.println(num + " : 홀수!");
} else if(num ==0) { //짝수 판별 전 0일 경우를 먼저 물어봄
System.out.println(num + " : 0!");
} else { // 짝수인 경우 (else if((num%2) == 0) 사용해도 동일함)
// 최소한 0을 판별하는 조건식보다 아래쪽에 짝수를 판별해야 함!
System.out.println(num + " : 짝수!");
}
else if문 작성 시에는 조건식의 범위가 좁은 조건식부터 판별
- 만약, 6~9의 숫자를 판단하려면?
- 조건식은 무엇을 먼저 적는지에 따라 결과값이 달라진다. →좁은 범위부터 쓰기
- num이 5보다 클 경우 "5보다 크다!";
- num이 10보다 클 경우 "10보다 크다!";
num = 20;
if(num > 10) {
System.out.println("10보다 크다!");
} else if(num > 5) {
System.out.println("5보다 크다!"); // 6,7,8,9 중 숫자
}
예제
문자 ch에 대해 대문자, 소문자, 숫자(0~9), 기타 문자 판별
=> 위의 모든 조건이 false 일 때 "기타 문자" 출력
char ch = '!';
if(ch>='A' && ch<='Z') { // if(ch >=65 && ch<=90) 식과 동일
System.out.println(ch + " : 대문자");
} else if(ch>='a' && ch<='z') { // else if(ch >=97 && ch<=120) 식과 동일
System.out.println(ch + " : 소문자");
} else if(ch>=0 && ch<=9) {
System.out.println(ch + " : 숫자");
} else {
System.out.println(ch + " : 기타 문자");
}
문자 ch 가 대문자일 때 소문자로 변환하고, 소문자일 때 대문자로 변환
=> 대문자, 소문자가 아닐 경우 "변환 불가!" 출력
ch = 'G';
if(ch>='A' && ch<='Z') { // if(ch >=65 && ch<=90) 식과 동일
System.out.println(ch + " : 대문자");
// 대문자 -> 소문자로 변환 시 32만큼 더하면
ch += 32;
System.out.println("소문자 변환 : " + ch);
} else if(ch>='a' && ch<='z') { // else if(ch >=97 && ch<=120) 식과 동일
System.out.println(ch + " : 소문자");
// 소문자 -> 대문자로 변환 시 32만큼 빼면
ch -= 32;
System.out.println("대문자 변환 : " + ch);
} else {
System.out.println("변환 불가!");
}
학생의 점수를 입력받아 학점 계산 후 출력
- 점수(정수형)를 저장할 변수 score를 선언하고 임의의 점수 저장
- 학점(문자열)을 저장할 변수 grade를 선언하고 널스트링("") 저장
- if문을 사용하여 다음 조건에 맞는 학점을 계산하고 계산 결과에 따른 학점을 문자열로 grade 변수에 저장
- 학점 "A" : 90 ~ 100점 학점 "B" : 80 ~ 89점 학점 "C" : 70 ~ 79점 학점 "D" : 60 ~ 69점 학점 "F" : 0 ~ 59점
- < 출력 예시 > 85점의 학점 : B
System.out.println("학점계산");
int score = 77;
String grade =""; // 문자열을 저장하는 변수 String ("~")
if(score>=90 && score<=100) {
System.out.println("점수 : " + score + ", 학점 : A" );
} else if (score>=80 && score<=89) {
System.out.println("점수 : " + score + ", 학점 : B" );
} else if (score>=70 && score<=79) {
System.out.println("점수 : " + score + ", 학점 : C" );
} else if (score>=60 && score<=69) {
System.out.println("점수 : " + score + ", 학점 : D" );
} else {
System.out.println("점수 : " + score + ", 학점 : F" );
}
'JAVA' 카테고리의 다른 글
[JAVA] switch-case문 (0) | 2023.09.08 |
---|---|
[JAVA] 중첩 if문 (0) | 2023.09.08 |
[JAVA] 6가지 연산자(논리, 증감, 삼항) (0) | 2023.09.08 |
[JAVA] 6가지 연산자(결합, 대입, 비교) (0) | 2023.09.08 |
[JAVA] 산술 연산 시 자동 형변환 (0) | 2023.09.08 |