한화시스템/백엔드
[BE] JAVA_조건문
jjam-mo
2024. 7. 13. 15:46
1. 조건문 개요
1-1. 조건문이란?
💡"조건식"을 통해 특정 코드를 실행할지 말지를 제어해주는 구문
특정 조건식의 결과가 참이라면 조건문 내부의 코드를 실행한다. 조건식은
true, false같이 boolean형 타입을 반환해주는 식
1-2. 조건문 종류
💡 조건문은 크게 2가지 if 문과 switch 문으로 분류된다.
if문은 if 문, if-else 문, if-else if 문으로 나뉜다.
/* 실행하기 위한 main 클래스 */
package com.ohgiraffers.section01.conditional;
public class Application {
public static void main(String[] args) {
A_if aClass = new A_if();
/* 설명. 단독 if문 흐름 확인용 메소드 호출 */
aClass.testSimpleIfStatement();
/* 설명. 중첩 if문 흐름 확인용 메소드 호출 */
aClass.testNestedIfStatement();
B_ifElse bClass = new B_ifElse();
/* 설명. 단독 if-else문 흐름 확인용 메소드 호출 */
bClass.testSimpleIfElseStatement();
/* 설명. 중첩 if-else문 흐름 학인용 메소드 호출 */
bClass.testNestedIfElseStatement();
C_ifElseIf cClass = new C_ifElseIf();
/* 설명. 단순 if-else if문 흐름 확인용 메소드 호출 */
cClass.testSimpleIfElseIfStatement();
/* 설명. 중첩 if-else if문 흐름 확인용 메소드 호출 */
cClass.testNestedIfElseIfstatement();
/* 설명. switch문 흐름 확인용 메소드 호출 */
D_switch.testSimpleSwitchStatement();
}
}
2. if 문 개요
2-1. if 문 표현식
if (조건식) {
수행문;
...
}
package com.ohgiraffers.section01.conditional;
import java.util.Scanner;
public class A_if {
public void testSimpleIfStatement() {
Scanner sc = new Scanner(System.in);
System.out.print("정수 한 개를 입력하세요: ");
int input = sc.nextInt();
// psudo 코드
// 만약에(입력받은 값이 짝수면) {
// "짝수입니다"라고 출력한다.
// }
if (input % 2 == 0) {
System.out.println("짝수입니다.");
}
}
public void testNestedIfStatement() {
Scanner sc = new Scanner(System.in);
System.out.print("양수 하나를 입력해 주세요: ");
int input = sc.nextInt();
if (input > 0) {
if (input % 2 != 0) {
System.out.println("입력받은 값은 양수이면서 홀수입니다.");
}
}
if (input > 0 && input % 2 == 1) {
System.out.println("이것도 양수이면서 홀수인지 판별됨");
}
}
}
3. if-else 문 개요
3-1. if-else 문 표현식
if (조건식) {
조건식이 true 일 때 실행되는 수행문;
...
} else {
조건식이 false 일 때 실행되는 수행문;
...
}
package com.ohgiraffers.section01.conditional;
import java.util.Scanner;
public class B_ifElse {
public void testSimpleIfElseStatement() {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 하나 입력하세요: ");
int input = sc.nextInt();
// 만약에(홀수라면) {
// "입력하신 정수는 홀수입니다." 라면
// } 그밖에 {
// "입력하신 정수는 짝수입니다." 출력
// }
if (input % 2 != 0) {
System.out.println("입력하신 정수는 홀수입니다.");
} else {
System.out.println("입력하신 정수는 짝수입니다.");
}
}
public void testNestedIfElseStatement() {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 하나 입력하세요: ");
/* 설명. 정수를 하나 입력받아 양수와 음수를 구분하고 양수일 때만 짝수인지 아닌지 판별한다.(각 상태 모두 출력) */
int input = sc.nextInt();
if (input >= 0) {
if (input % 2 == 0) {
System.out.println("양수이면서 짝수입니다.");
} else {
System.out.println("양수이면서 홀수입니다.");
}
} else {
System.out.println("양수가 아닌 경우(음수인 경우)");
}
}
}
4. if-elseif 문 개요
4-1. if-elseif 문 표현식
if (조건식1) {
수행문;
...
} else if(조건식2) {
수행문;
...
} else {
수행문;
...
}
package com.ohgiraffers.section01.conditional;
import java.util.Scanner;
public class C_ifElseIf {
public void testSimpleIfElseIfStatement() {
System.out.println("산 속에서 나무를 하면서 나무꾼이 연못에 도끼를 빠뜨리고 말았다.");
System.out.println("연못에서 산신령이 나타나 금도끼, 은도끼, 쇠도끼를 들고 나타났다.");
System.out.println("나무꾼에게 셋 중 어떤 도끼가 나무꾼의 도끼인지 몰어보았다.");
System.out.print("어느 도끼가 너의 도끼이냐? (1. 금도끼, 2. 은도끼, 3. 쇠도끼):");
Scanner sc = new Scanner(System.in);
int answer = sc.nextInt();
if (answer == 1) {
System.out.println("이런 거짓말쟁이!! 너에게는 아무런 도끼도 줄 수 없구나!! 이 욕심쟁이야!!");
} else if (answer == 2) {
System.out.println("욕심이 과하지는 않지만 그래도 넌 거짓말을 하고 있구나!! 썩 꺼지거라!!");
} else {
System.out.println("오호~ 정직하구나~ 여기 있는 금도끼, 은도끼, 쇠도끼를 다 가져가거라!");
}
System.out.println("그렇게 산신령은 다시 연못 속으로 홀연히 사라지고 말았다...");
}
public void testNestedIfElseIfstatement() {
/* 설명.
* ohgiraffers 대학의 김XX 교수님은 학생들 시험 성적을 수기로 계산해서 학점 등급을 매기는
* 채점방식을 사용하고 있다.
* 90점 이상이면 'A', 80점 이상이면 'B', 70점 이상이면 'C', 60점 이상이면 'D', 마지막으로
* 60점 미만인 경우에는 'F'를 학점으로 주게 된다.
* 그래서 학생의 이름과 점수를 입력하면 자동으로 학점 등급이 계산되는 프로그램을 만들기로 했다.
* (추가로, 각 등급의 중간점수(95, 85, 75...) 이상인 경우 '+'를 붙여서 등급을 세분화 해보자.)
*
* 설명.
* 출력 예시: XXX 학생의 점수는 86점이고, 등급은 B+입니다.
* 프로그램을 종료합니다.
* */
Scanner sc = new Scanner(System.in);
System.out.print("학생의 이름: ");
String name = sc.nextLine();
System.out.print("학생의 성적: ");
int point = sc.nextInt();
// if (point >= 90) {
// if (point >= 95) {
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 A+입니다.");
// System.out.println("프로그램을 종료합니다.");
// } else {
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 A입니다.");
// System.out.println("프로그램을 종료합니다.");
// }
// } else if (point >= 80) {
// if (point >= 85) {
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 B+입니다.");
// System.out.println("프로그램을 종료합니다.");
// } else {
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 B입니다.");
// System.out.println("프로그램을 종료합니다.");
// }
// } else if (point >= 70) {
// if (point >= 75) {
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 C+입니다.");
// System.out.println("프로그램을 종료합니다.");
// } else {
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 C입니다.");
// System.out.println("프로그램을 종료합니다.");
// }
// } else if (point >= 60) {
// if (point >= 65) {
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 D+입니다.");
// System.out.println("프로그램을 종료합니다.");
// } else {
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 D입니다.");
// System.out.println("프로그램을 종료합니다.");
// }
// } else {
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 F입니다.");
// System.out.println("프로그램을 종료합니다.");
// }
// String grade = "";
//
// if (point >= 90) {
// if (point >= 95) {
// grade = "A+";
// } else {
// grade = "A";
// }
// } else if (point >= 80) {
// if (point >= 85) {
// grade = "B+";
// } else {
// grade = "B";
// }
// } else if (point >= 70) {
// if (point >= 75) {
// grade = "C+";
// } else {
// grade = "C";
// }
// } else if (point >= 60) {
// if (point >= 65) {
// grade = "D+";
// } else {
// grade = "D";
// }
// } else {
// grade = "F";
// }
// System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 " + grade + " 입니다.");
// System.out.println("프로그램을 종료합니다.");
// 선생님 코드
String grade = "";
if (point >= 90) {
grade = "A";
} else if (point >= 80) {
grade = "B";
} else if (point >= 70) {
grade = "C";
} else if (point >= 60) {
grade = "D";
} else {
grade = "F";
}
if (point == 100 || (point % 10 >= 5 && point >= 60)) {
grade += "+";
}
System.out.println(name + " 학생의 점수는 " + point + " 점이고, 등급은 " + grade + " 입니다.");
System.out.println("프로그램을 종료합니다.");
}
}
5. switch 문 개요
5-1. switch 문 표현식
switch(비교할변수) {
case 비교값1 :
비교값1과 일치하는 경우 실행할 구문;
break;
case 비교값2 :
비교값2와 일치하는 경우 실행할 구문;
break;
default :
case에 모두 해당하지 않는 경우 실행할 구문;
break;
}
package com.ohgiraffers.section01.conditional;
import java.util.Scanner;
public class D_switch {
public static void testSimpleSwitchStatement() {
// 어떤 관점인지가 중요!
Scanner sc = new Scanner(System.in);
System.out.print("등급을 입력하세요(G, S, B): ");
char grade = sc.next().charAt(0);
int point = 0;
boolean flag = true;
switch (grade) {
case 'G': point += 10;
case 'S': point += 10;
case 'B': point += 10;
break;
default:
flag = false;
System.out.println("똑바로 입력 좀 합세!~");
}
/* 설명. G/S/B 중에 하나를 입력하면 해당 등급의 point를 보여주고 그렇지 않으면 회원가입 유도 */
// if (grade == 'G' || grade == 'S' || grade == 'B') {
if (flag) {
System.out.println("당신의 등급은 " + grade + "이며, 현재 포인트는 " + point + "입니다.");
} else {
System.out.println("그럼 이참에 회원가입 고고씽!");
}
}
}