[Java] if조건식, Switch
if문
if(조건식){
조건식이 true일 때 실행할 명령문;
}
=> 조건을 만족하는 경우에만 추가적인 명령을 싫애시키고자 할 때 주로 사용한다.
-정수 한 개를 입력 받아 그 수가 짝수이면 "입력하신 숫자는 짝수입니다." 라고 출력하고,
짝수가 아니면 출력하지 않는 구문을 작성해보자
public void testSimpleIfStatement() {
Scanner sc = new Scanner(System.in);
System.out.print("숫자 한 개를 입력하세요 : ");
int num = sc.nextInt();
// 짝수인지 물어보는 조건을 기술함
System.out.println("입력하신 숫자는 짝수입니다.");
}
// 조건문과 상관 없이 실행하는 구문
System.out.println("프로그램을 종료합니다.");
}
if중첩문
if문 안에서 또 다른 조건을 사용하여 if문을 사용할 수 있다.
정수 한 개를 입력 받아 그 수가 양수인 경우에만 짝수인지를 확인하여
짝수이면 "입력하신 숫자는 양수이면서 짝수입니다."라고 출력하고
둘 중 하나라도 해당하지 않으면 아무 내용도 출력하지 않는 구문을 작성해보자
public void testNestedIfStatement() {
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("프로그램을 종료합니다.");
if-else문
if(조건식) {
조건식이 true일 때 실행할 명령문;
} else {
조건식이 false일 때 실행할 명령문;
}
=> 조건을 만족하는지 여부에 따라 둘 중 하나는 무조건 실행해야하는 경우 많이 사용된다.
-정수 한 개를 입력 받아 그 수가 홀수이면 "입력하신 숫자는 홀수입니다." 라고 출력하고, 홀수가 아니면 "입력하신 숫자는 짝수입니다." 라고 출력하는 프로그램을 작성해보자.
public void testSimpleIfElseStatement() {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 하나 입력하세요 : ");
int num = sc.nextInt();
// 홀수인지 조건 확인
if(num % 2 != 0) {
// 조건식이 참일 때 출력할 내용
System.out.println("입력하신 정수는 홀수입니다.");
} else {
// 조건식이 거짓일 때 출력할 내용
System.out.println("입력하신 정수는 짝수입니다.");
}
// 조건문과 상관 없이 출력할 내용
System.out.println("프로그램을 종료합니다.");
}
if-else 중첩문
숫자를 하나 입력 받아 양수이면 "입력하신 숫자는 양수입니다." 라고 출력하고,
음ㅅ위면 "입력하신 숫자는 음수입니다." 출력
단, 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("프로그램을 종료합니다.");
if-else-if문 표현식
if(조건식1) {
조건식1이 true일 때 실행할 명령문;
} else if(조건식2 {
조건식1이 false이고 조건식2가 true일 때 실행할 명령문;
} else {
위의 조건 2개가 모두 거짓인 경우 실행할 명령문;
}
=> 여러개의 조건을 제시하며 그 중 한 가지를 반드시 실행시키고 싶은 경우 사용한다.
-대답이 금도끼, 은도끼, 쇠도끼일 때마다 다르게 출력한다.
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("그렇게 산신령은 다시 연못 속으로 사라지고 말았다...");
}
Switch
switch(비교할변수) {
case 비교값1 : 비교값1과 일치하는 경우 실행할 구문; break;
case 비교값2 : 비교값2와 일치하는 경우 실행할 구문; break;
default : case에 모두 해당하지 않는 경우 실행할 구문; break;
여러 개의 비교값 중 일치하는 조건에 해당하는 로직을 실행하는 것은 if-else-if와 유사하다.
따라서 일부 호환이 가능하다.
하지만, switch문으로 비교 가능한 값은 정수, 문자, 문자열 형태의 값이다.
실수와 논리는 비교할 수 없다.
또한 정확하게 일치하는 경우만 비교할 수 있으며 대소비교를 할 수 없다는게 차이점이다.
case 절에는 변수를 사용하지 못한다. (값만 비교 가능)
-정수 두 개와 연산 기호 문자를 입력 받아서 두 숫자의 연산 결과를 출력해보는 계산기를 만들자.
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 정수 입력 : ");
int first = sc.nextInt();
System.out.print("두 번째 정수 입력 : ");
int second = sc.nextInt();
System.out.print("연산 기호 입력(+, -, *, /, %) : ");
char op = sc.next().charAt(0);
/* 연산의 결과를 저장할 변수 */
int result = 0;
switch(op) {
case '+' :
result = first + second;
break;
case '-' :
result = first - second;
break;
case '*' :
result = first * second;
break;
case '/' :
result = first / second; //second가 0이면 에러 발생(java.lang.ArithmeticException)
break;
case '%' :
result = first % second;
break;
//default문은 생략 가능하지만 생략하는 경우 주석으로 생략 이유를 작성해주는 것이 좋다. */
System.out.println(first + " " + op + " " + second + " = " + result);