💁 조건문(Conditional Statement)이란,
주어진 조건을 비교 및 판단하여 그 조건에 만족할 경우 지정된 명령을 실행하고, 만족하지 않을 경우 다음 단계의 명령을 수행하도록 하는 제어문
public void testSimpleIfStatement() {
// 정수 한 개를 입력 받아 짝수이면 출력, 아니면 출력 X
Scanner sc = new Scanner(System.in);
System.out.print("숫자 한개를 입력하세요 : ");
>>> 개행되지않도록 print 사용
int num = sc.nextInt();
>>> 정수형태를 출력하기 위해 nextInt 사용
if(num % 2 == 0) {
System.out.println("짝수입니다.");
}
System.out.println("프로그램을 종료합니다.");
}
if문 안에 또 다른 조건을 사용하여 if문을 사용
public void testNestedIfStatement( ) {
// 정수 한 개를 입력 받아 양수인 경우에만 짝수인지 확인하고 짝수인 경우 출력,
// 둘 중 하나라도 해당하지 않으면 출력 X
Scanner sc = new Scanner(System.in);
System.out.print("숫자 한개를 입력하세요 : ");
int num = sc.nextInt();
if(num > 0) {
if (num % 2 == 0) {
System.out.println("입력하신 숫자는 양수이면서 짝수입니다");
}
}
System.out.println("프로그램을 종료합니다");
}
public void testSimpleIfElseStatement() {
// 정수 한 개를 입력 받아 그 수가 홀수이면 "입력하진 숫자는 홀수입니다."라고 출력,
// 홀수가 아니면 "입력하신 숫자는 짝수입니다."라고 출력
Scanner sc = new Scanner(System.in);
System.out.print("정수 한 개를 입력하세요 : ");
int num = sc.nextInt();
if (num % 2 == 1) {
System.out.println("입력하신 숫자는 홀수임다!");
}
else {
System.out.println("입력하신 숫자는 짝수임다!");
}
System.out.println("프로그램 종료");
}
if-else문 안에 또 다른 조건을 사용하여 if-else문을 사용
public void testNestedIfElseStatement() {
// 정수 한 개를 입력 받아 양수이면 "입력하신 숫자는 양수입니다."라고 출력,
// 음수이면 "입력하신 숫자는 음수입니다."를 출력
// 단, 0이면 "0입니다"라고 출력
Scanner sc = new Scanner(System.in);
System.out.print("정수 한 개를 입력하세요 : ");
int num = sc.nextInt();
>>> 0인지 아닌지 조건 확인
if(num != 0) {
>>> 0이 아닌 경우 양수인지 음수인지 조건 확인
if(num > 0) {
System.out.println("입력하신 숫자는 양수입니다.");
} else {
System.out.println("입력하신 숫자는 음수입니다.");
}
} else {
>>> 0인 경우 출력할 내용
System.out.println("입력하신 숫자는 0입니다.");
}
System.out.println("프로그램 종료");
}
public void testSimpleIfElseIfStatement() {
// 90점 이상 A, 80점 이상 90점 미만 B, 70점 이상 80점 미만 C, 60점 이상 70점 미만 D,
// 60미만은 F로 점수에 따른 성적을 매김
// 학생의 이름과 점수 입력 받기
Scanner sc = new Scanner(System.in);
System.out.print("학생의 이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.print("점수를 입력하세요 : ");
int score = sc.nextInt();
>>> 학생의 등급을 저장하기 위한 변수 초기화
String grade = "";
if (score >= 90) {
grade = "A";
} else if(score >= 80) {
>>> 90점 미만의 조건은 필요 X (이미 위의 if문에서 90점 이상의 학생들은 "A"출력)
grade = "B";
} else if(score >= 70) {
grade = "C";
} else if(score >= 60) {
grade = "D";
} else {
grade = "F";
}
System.out.println(name + " 학생의 점수는 " + score + "점이고, 등급은 " + grade + "입니다!");
}
if-else if else 문 안에서 또 다른 조건을 사용하여 if문 / if-else문 / if-else if-else문을 사용
public void testNestedIfElseStatement() {
// 위의 메소드에서 추가적으로 95점, 85점, 75점, 65점 이상인 학생들의 등급에 + 붙여주기
Scanner sc = new Scanner(System.in);
System.out.print("학생의 이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.print("점수를 입력하세요 : ");
int score = sc.nextInt();
>>> 학생의 등급을 저장하기 위한 변수 초기화
String grade = "";
if (score >= 90) {
grade = "A";
if(score >= 95) {
>>> 중첩 if문을 추가하여 90점 중에 95점 이상이면 "+"도 추가
grade += "+";
>>> '+='를 이용하여 문자에 직접 중첩할 수 있음
}
} else if(score >= 80) {
grade = "B";
if(score >= 85) {
grade += "+";
}
} else if(score >= 70) {
grade = "C";
if(score >= 75) {
grade += "+";
}
} else if(score >= 60) {
grade = "D";
if(score >= 65) {
grade += "+";
}
} else {
grade = "F";
}
System.out.println(name + " 학생의 점수는 " + score + "점이고, 등급은 " + grade + "입니다!");
}
public void improveNestedIfElseIfStatement() {
>>> 두번째 method와 같은 출력결과이지만 보다 더 간결하고 효율적
// 바로 위에서 작성한 코드를 개선
Scanner sc = new Scanner(System.in);
System.out.print("학생의 이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.print("점수를 입력하세요 : ");
int score = sc.nextInt();
>>> 학생의 등급을 저장하기 위한 변수 초기화
String grade = "";
if (score >= 90) {
grade = "A";
} else if(score >= 80) {
grade = "B";
} else if(score >= 70) {
grade = "C";
} else if(score >= 60) {
grade = "D";
} else {
grade = "F";
}
// 각 등급의 중간 점수 이상이면서 60점 이상인지, 또는 100점인 경우 "+" 추가
if(score % 10 >= 5 && score >= 60 || score == 100) {
>>> 점수를 10으로 나눴을 때의 나머지가 5이상 이면서(&&) 점수가 60점. 또는(||) 점수가 100점
grade += "+";
}
System.out.println(name + " 학생의 점수는 " + score + "점이고, 등급은 " + grade + "입니다!");
}
public void testSimpleSwitchStatement() {
// 정수 두 개와 연산 기호 문자를 입력받아 두 숫자의 연산 결과를 출력해보는 간단한 계산기
Scanner sc = new Scanner(System.in);
System.out.println("첫 번째 정수 입력 : " );
int first = sc.nextInt();
System.out.println("두 번째 정수 입력 : " );
int second = sc.nextInt();
System.out.println("연산 기호 입력(+, -, *, /, %) : ");
char op = sc.next().charAt(0);
>>> 문자를 출력하고 싶을 때, 문자열을 먼저 출력(sc.next())후,
>>> (.chatAt(0))을 이용해 문자열의 첫 번째 자리의 문자를 출력해냄
>>> 연산의 결과를 저장할 변수
int result = 0;
>>> 콘솔에 입력할 연산 기호에 따라 달라지는 결과를 switch문으로 표현
switch(op) {
case '+' :
result = first + second;
break;
>>> case '+' 빠져나오는 역할
case '-' :
result = first - second;
break;
case '*' :
result = first * second;
break;
case '/' :
result = first / second;
break;
case '%' :
result = first % second;
break;
// 산술 연산 외의 다른 문자에 대한 처리는 생략하였음
}
System.out.println(first + " " + op + " " + second + " = " + result);
}
📌 Ref.
* default문은 생략 가능하지만 생략하는 경우 주석으로 생략 이유를 작성해주는 것이 좋음
ex) // 산술 연산 외의 다른 문자에 대한 처리는 생략하였음
public void testSwitchVendingMachine() {
// switch문을 이용한 문자열 값 비교 및 break에 대한 테스트
Scanner sc = new Scanner(System.in);
System.out.println("=============== 음료 자판기 ===============");
System.out.println(" 사이다 콜라 환타 박카스 핫식스 ");
System.out.println("========================================");
System.out.println("음료를 선택해주세요");
String selectedDrink = sc.nextLine();
>>> 원하는 음료에 맞는 가격을 저장할 변수 초기화
int price = 0;
switch(selectedDrink) {
case "사이다" :
>>> 사이다는 콜라와 price가 같다면, 따로 price를 입력한 뒤
>>> break;를 사용하지 않아도 정상적으로 실행이 됨 (의도적인 break; 활용)
case "콜라" :
price = 1000;
break;
case "환타" :
price = 1200;
break;
case "박카스" :
price = 1500;
break;
case "핫식스" :
price = 1800;
break;
}
System.out.println(selectedDrink + "를 선택하셨습니다.");
System.out.println(price + "원을 투입해주세요!");
}
📌 Ref.
* JDK 1.7 이상부터는 switch문을 이용하여 문자열을 비교할 수 있음
* break를 사용하지 않으면 멈추지 않고 계속 실행 구문을 동작시킴
public class Application {
public static void main(String[] args) {
A_if a = new A_if();
a.testSimpleIfStatement();
a.testNestedIfStatement();
B_ifElse b = new B_ifElse();
b.testSimpleIfElseStatement();
b.testNestedIfElseStatement();
C_ifElseifElse c = new C_ifElseifElse();
c.testSimpleIfElseIfStatement();
c.testNestedIfElseStatement();
c.improveNestedIfElseIfStatement();
D_Switch d = new D_Switch();
d.testSimpleSwitchStatement();
d.testSwitchVendingMachine();
}