
java의 비교문으로는 if문과 switch문이 있다.
package kr.s05.operation;
public class IfMain01 {
public static void main(String[] args) {
System.out.println("===단일if문===");
int n = 10;
//단일if문 : 조건이 true이면 if블럭 안의 수행문을 실행
if(n > 5) {
System.out.println("n은 5보다 크다");
}
System.out.println("==============");
//if문 블럭 내의 수행문이 한 줄이면 {} 블럭을 생략할 수 있음
if(n < 5)
System.out.println("~~~~~~~~~~~");
System.out.println("프로그램 종료!");
}
}
package kr.s05.operation;
public class IfMain02 {
public static void main(String[] args) {
System.out.println("===단일if문===");
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("정수 하나 입력 : ");
int a = input.nextInt();
if(a < 0)
a = -a;
System.out.println("절대값은 " + a + "이다");
input.close();
}
}
단일 if문: if(조건){수행문}이 true면 수행문 출력, false면 아무것도 출력되지 않는다.
수행문이 한 줄이면 {} 블럭 생략이 가능하다.
package kr.s05.operation;
public class IfMain03 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("정수 하나 입력 : ");
int a = input.nextInt();
if(a%2==1)
System.out.println("홀수이다.");
else
System.out.println("짝수이다.");
input.close();
}
}
if~else: 조건이 true이면 if 블럭의 수행문을 수행하고, false면 else 블럭의 수행문을 수행한다.
홀수, 짝수 구하는 방법: (int 변수)%2 == 1
정수를 2로 나누었을 경우 나머지가 1과 같으면 홀수, 0이면 짝수
package kr.s05.operation;
public class IfMain04 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("정수 한 개 입력 : ");
int a = input.nextInt();
//다중if문
if(a > 0)
System.out.println(a + "는 양수입니다.");
else if(a < 0)
System.out.println(a + "는 음수입니다.");
else
System.out.println("0입니다.");
input.close();
}
}
또한, 다중 if문을 활용하여 성적 프로그램을 만들어 보았다.
> Scanner, 다중 if문을 활용해 성적 프로그램 만들기
지금까지 배운 자료형, 형변환, 연산자, if문 개념에 대한 문법 연습을 아래와 같이 진행하였다.
package kr.s05.operation;
public class IfMain06 {
public static void main(String[] args) {
int a = 10;
float b = 10.0f;
if(a == b) {//a : int -> float 자동 형변환
System.out.println("10과 10.0f는 같다.");
}
char c = '0';
int d = 0;
if(c != d) {//c는 int로 형변환 되어 48로 인식
System.out.println("'0'과 0은 같지 않다.");
}
char e = 'A';
int f = 65;
if(e == f) {
System.out.println("'A'는 65와 같다.");
}
}
}
또한, 위에서 배운 개념을 바탕으로 실습을 진행하였다.
package kr.s05.operation;
public class IfMain07 {
public static void main(String[] args) {
/*
*[실습]
* 정수 하나를 입력하여 짝수면 10을 더하고 홀수이면 20을
* 더하여 결과를 출력하시오.
*
*[입력 예시]
* 정수 하나 입력: 5
*
*[출력 예시]
*결과 : 25
*/
java.util.Scanner input = new java.util.Scanner(System.in);
int v, num;
System.out.print("정수 하나 입력 : ");
v = input.nextInt();
if(v%2 == 1) {
num = v + 20;
}else
num = v + 10;
System.out.printf("결과 : %d%n", num);
input.close();
}
}
package kr.s05.operation;
public class IfMain08 {
public static void main(String[] args) {
/*
*[실습]
* 정수 두 개를 입력 받아서 변수에 저장하고 두 값 중 최대값과
* 최소값을 구하여 최대값과 최소값을 출력하시오.
*
* [입력 예시]
* 첫번째 정수 입력: 2
* 두번째 정수 입력: 3
*
* [출력 예시]
* 최대값 : 3
* 최소값 : 2
* -------------------
* or
* 두 수는 같다.
*/
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("첫번째 정수 입력: ");
int a = input.nextInt();
System.out.print("두번째 정수 입력: ");
int b = input.nextInt();
if(a > b) {
System.out.println("최대값 : " + a);
System.out.println("최소값 : " + b);
}else if(a < b) {
System.out.println("최대값 : " + b);
System.out.println("최소값 : " + a);
}else {
System.out.println("두 수는 같다.");
}
input.close();
}
}
9월 4일, 다중 if문을 활용하여 만 나이를 구하는 프로그램을 만들어 보았다.
> Scanner, 다중 if문을 활용해 만 나이 프로그램 만들기
package kr.s05.operation;
public class SwitchMain01 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("정수형 숫자 입력> ");
int a = input.nextInt();
switch(a) {
case 1:
System.out.println("1 입력");
break;//switch 블럭을 빠져나감
case 2:
System.out.println("2 입력");
break;
case 3:
System.out.println("3 입력");
break;
default:
System.out.println("1,2,3이 아닌 숫자 입력");
}
input.close();
}
}
switch문
1) switch문은 long형을 제외한 정수형(byte, short, int)과 char, 문자열을 지원한다.
2) 입력된 데이터인 인자값과 케이스의 조건값이 일치하면 그에 해당하는 수행문을 출력한다.
switch의 중괄호는 수행 블럭이 아닌 전체 블럭에 가깝다.
1) 따라서 케이스마다 수행 블럭이 있는 것이 아니기 때문에 break를 통해 출력할 값이 빠져나와야 한다. 만약 break;를 입력하지 않으면 그 이후 수행문이 모두 출력된다.
2) default의 경우, 다중 if문의 else와 같은 개념으로 가장 마지막이니 따로 break를 써줄 필요가 없다.
3) 반면, if는 수행문이 담긴 수행 블럭을 가지고 있다.

case의 조건 값과 수행문을 구별해주는 것은 ;(세미콜론)이 아닌 :(콜론)이다.
case 다음 와야 하는 인자의 값이 숫자라면 그냥 써주면 되지만, 문자 혹은 문자열이라면 큰 따옴표가 필요하다.
ex. case 봄: (x) case "봄": (o)
코드를 효율적으로 작성하기 위해서는 각 케이스별 수행문이 같은 케이스가 인접하여 있을 경우, 한 번만 작성한다.
ex.
switch(score/10) {
case 10:
case 9: grade = ‘a’; break;
package kr.s05.operation;
public class SwitchMain02 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("계절 입력> ");
String season = input.nextLine();
switch(season) {
case "봄":
System.out.println("꽃이 피는 계절");break;
case "여름":
System.out.println("뜨거운 태양의 계절");break;
case "가을":
System.out.println("산들바람이 부는 계절");break;
case "겨울":
System.out.println("눈이 내리는 계절");break;
default:
System.out.println("없는 계절");
}
input.close();
}
}
switch문을 통해 등급을 구하는 성적 프로그램을 만들어 보았다.
> Scanner, if, switch를 활용해 성적 프로그램 만들기
위에서 배운 개념을 바탕으로 실습을 진행하였다.
package kr.s05.operation;
public class SwitchMain04 {
public static void main(String[] args) {
/*
*[실습]
*두 개의 정수와 연산자를 입력한 후 연산의
*결과를 출력하시오.
*
*[입력 예시]
*첫번째 수 : 10
*연산자 : + (next(), 산술 연산자만 활용)
*두번째 수 : 20
*
*[출력 예시]
*10 + 20 = 30
*/
java.util.Scanner input = new java.util.Scanner(System.in);
int result = 0;
System.out.print("첫번째 수 : ");
int first = input.nextInt();
System.out.print("연산자 : ");
String operator = input.next();
System.out.print("두번째 수 : ");
int second = input.nextInt();
switch(operator) {
case "+" :
result = first + second; break;
case "-" :
result = first - second; break;
case "*" :
result = first * second; break;
case "/" :
if(second == 0) {
System.out.println("0으로 나눌 수 없습니다.");
System.exit(0);
}else {
result = first / second; break;
}
case "%" :
if(second == 0) {
System.out.println("0으로 나눌 수 없습니다.");
System.exit(0);
}else {
result = first % second; break;
}
default :
System.out.println("잘못된 연산자 입력");
System.exit(0);
}
System.out.printf("%d %s %d = %d", first, operator, second, result);
input.close();
}
}
+와 - 같은 연산자 역시 String 자료형에 해당한다.
앞선 예제와 마찬가지로 if를 통해 0으로 나누었을 때의 예외 처리를 해준다.