티스토리 뷰
Day4. 자바의 연산자2 & 조건문
4일차 강의를 마치고왔습니다..
어제에 이어서 연산자 남은 수업인 삼항, 비트, 쉬프트 연산자를 마저듣고,
조건문에 대해서 주된 강의었습니다.
(시간상 조건문 앞도 다뤘는데 너무 짧아서 내일 조건문을 마저 다듣고 같이 게재하겠습니다.)
<삼항 연산자> : 조건 연산자 (삼항 연산자는 조건문과 비슷한 기능으로 주로 쓰이진 않는다고 합니다.)
기본적인 타입은 a ? b : c 의 형태가 되겠습니다.
-여기서 a는 true/false가 도출되는 식을 사용해야 합니다.
-b는 a가 true일 때, c는 a가 false일 때 진행됩니다.
-이때 b,c의 타입은 같아야 합니다.
* 과정의 특성상 웹 개발을 목표로한 과정으로,
웹 개발에서 잘 다루지않는 기술은 개념설명 정도만 하고 넘어가고 있습니다.
비트 연산자와 쉬프트 연산자는 암호화하는 분야에서 주로 사용 된다고 들었습니다.
<비트 연산자>
5 & 3 // 5 | 3 --> 2진수 변환 후 연산
00000101 & 00000011 = 00000001 = 1 (둘다 1일때 1)
00000101 | 00000011 = 00000111 = 7 (둘중 하나가 1일때 1)
<쉬프트 연산자>
8 >> 2 (8을 우로 2만큼 비트 이동시킨다. 역시 2진수로 변환 후 연산)
00001000 > 00000010
8 << 2 (8을 좌로)
00001000 < 00100000
<조건문(분기문)>
: 조건의 결과가 true/false일 때, 다른 결과값을 보여주는 분기문.
--If문
1. if문 조건식 판별 후 참일 경우, 수행문을 수행한다.
조건식은 true 혹은 false 값이 나오는 식이어야 한다.
(* 비교연산자 혹은 논리연산자를 사용하는 식이 주로 온다.)
2. if ~ else문
1 2 3 4 5 6 7 8 9 10 11 12 | public class IfDemo1 { public static void main(String[] args) { int score = 60; if (score >= 60) { System.out.println("합격하였습니다."); } else { System.out.println("불합격하였습나다."); } } } | cs |
6행의 score >= 60 이 참일 경우, 7행을 수행
거짓일 경우, 9행을 수행
3. if ~ else if ~ else if ~ else문
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class IfDemo2 { public static void main(String[] args) { int score = 86; if (score >= 90) { System.out.println("A학점입니다."); } else if (score >= 80) { System.out.println("B학점입니다."); } else if (score >= 70) { System.out.println("C학점입니다."); } else if (score >= 60) { System.out.println("D학점입니다."); } else { System.out.println("F학점입니다."); } } } | cs |
6행의 조건식이 참일 경우 7행을 수행
거짓일 경우 8행 조건식 판별, 참일 경우 9행 수행
거짓일 경우 10행 조건식 판별, 참일 경우 11행 수행
거짓일 경우 12행 조건식 판별, 참일 경우 13행 수행
거짓일 경우 14행에 해당되는 나머지 모든 조건의 경우에 15행을 수행합니다.
4. 내포된 if문 : if문, else if문, else문 안에 포함 시킬 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class IfDemo3 { public static void main(String[] args) { int score = 91; // 60점 이상 합격( 합격자 중에서 95점 이상 입학금 면제, 그 외 입학금 10만원) if (score >= 60) { System.out.println("합격입니다."); if (score >= 95) { System.out.println("입학금 면제대상 입니다."); } else { System.out.println("입학금 10만원을 납부하세요."); } } else { System.out.println("불합격입니다."); } } } | cs |
위에서 다룬 1,2,3번과 같은 원리에, 7,8,9행을 보면 if문안에 다른if문을 넣어서 사용할 수 있습니다.
-- switch문 ( 웹 개발보단 게임 개발에서 주로 사용한다고 합니다. if문 >= switch문)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class SwitchDemo1 { public static void main(String[] args) { String grade = "실버"; switch (grade) { case "골드" : System.out.println("5%가 적립됩니다."); // break 없이 실행 시 break; // 3%, 1%, 적립안됨이 모두 출력된다. case "실버" : System.out.println("3%가 적립됩니다."); break; case "브론즈" : System.out.println("1%가 적립됩니다."); break; default : System.out.println("적립되지 않습니다."); } } } | cs |
6행의 switch(변수)의 변수 값이 7,10,13행의 case "~~"에 ~~값과 일치하면 해당 수행문이 수행됩니다.
이때, break 라는 키워드로 밑에 case이 이어서 수행되지 않게 해당 case만 수행하고 나가게 해줍니다.
default는 위의 case들이 해당되지 않을때 수행됩니다.
위에서 배운 if문을 응용해서 아주 약간 조금이나마, 프로그램다운 프로그램을 코딩해봤습니다.
문제 )
// 상품가격, 구매수량, 현재 포인트를 입력받는다.
// 50만원 이상 구매시 구매금액의 5% 할인,
// 30만원 이상 구매시 구매금액의 2% 할인,
// 그 외 할인 없음
// 현재 포인트가 1만점 이상일 때는 실제 지불금액의 0.3%를 포인트로 적립
// 현재 포인트가 5천점 이상일 때는 실제 지불금액의 0.2%를 포인트로 적립
// 그 외 0.1%를 포인트로 적립
// 상품가격, 구매수량. 총 구매가격, 할인받은 금액, 실제지불금액을 표시
// 적립전 포인트, 포인트 적립량, 적립후 포인트
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import java.util.Scanner; public class IfDemo7 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int price = 0; int amount = 0; int totalPrice = 0; int discount = 0; int pay = 0; int currentPoint = 0; // 현재 포인트 int point = 0; // 포인트 적립량 int savedPoint = 0; // 적립된 포인트 System.out.println("상품가격을 입력하세요."); price = scanner.nextInt(); System.out.println("구매수량을 입력하세요."); amount = scanner.nextInt(); System.out.println("현재 포인트를 입력하세요."); currentPoint = scanner.nextInt(); totalPrice = price*amount; if (totalPrice >= 500000) { discount = totalPrice*5/100; } else if (totalPrice >= 300000) { discount = totalPrice*2/100; } else { System.out.println("할인 없음"); } pay = totalPrice - discount; if (currentPoint >= 10000) { point = pay*3/1000; } else if (currentPoint >= 5000) { point = pay*2/1000; } else { point = pay*1/1000; } savedPoint = currentPoint + point; System.out.println("--------------------------"); System.out.println("상품가격 : " + price + "원"); System.out.println("구매수량 : " + amount + "개"); System.out.println("총 구매가격 : " + totalPrice + "원"); System.out.println("할인받은 금액 : " + discount + "원"); System.out.println("실제지불금액 : " + pay + "원"); System.out.println("--------------------------"); System.out.println("적립전 포인트 : " + currentPoint + "포인트"); System.out.println("적립 포인트 : " + point + "포인트"); System.out.println("적립후 포인트 : " + savedPoint + "포인트"); System.out.println("--------------------------"); } } | cs |
상품가격, 구매수량, 총 구매가격, 할인받은 금액, 실제지불금액, 적립전 포인트, 포인트 적립량, 적립후 포인트
를 순서대로 19~27행과 같이 선언했습니다.
29~34행에 임의로 상품가격과 구매수량, 현재 포인트를 입력받고,
36행에 총 구매가격을 상품가격 x 구매수량으로 정의한다음,
37~43행 오늘 배운 if문을 이용해서 7 ~ 10행의 조건을 만들었습니다.
( 0.05%는 위에서 int으로 선언하였으므로, 5/100으로 변환하여 정수 연산만으로 구현했습니다.)
45행은 총 구매가격에서 위의 조건문을 통해 연산된 할인받은 금액을 빼서 실제지불금액을 정의하였습니다.
47~53행은 12 ~ 14행에 대한 조건을 만든 것입니다.
마찬가지로, 55행은 적립된 포인트 = 현재포인트 + 포인트 적립량(47~53행의 연산에서 나온) 입니다.
코딩tip!
코딩에서 *, / 은 띄어쓰기를 하지않고 +, -은 띄어쓰는 관례
ex) a*b, a/b, a + b, a - b
오늘은, 프로그래밍 언어에서 정말 중요한 것들에 속하는 If문을 배웠습니다.
If문과 반복문은 앞으로 실무에서 정말 유용하게 다양하게 쓰인다고 하셨습니다.
아래는 오늘 다룬 예제 소스들입니다.
'Programming > JAVA' 카테고리의 다른 글
JAVA Web#6 Day 6 자바의 배열 (0) | 2019.02.26 |
---|---|
JAVA Web#5 Day 5 반복문 (0) | 2019.02.25 |
JAVA Web#3 Day 3 자바의 형 변환 & 연산자 (0) | 2019.02.20 |
JAVA Web #2 Day 2 자바의 변수 (0) | 2019.02.20 |
JAVA Web #1 Day 1 자바란? & JDK 설치 (0) | 2019.02.19 |
- Total
- Today
- Yesterday
- block element
- querybox
- 강제형변환
- jhta
- 자바 독학
- Database
- Oracle
- sql
- spring
- copotter
- 국비
- 블록엘리먼트
- h#
- 비등가조인
- 이클립스
- 자바 기초
- html
- 데이터베이스
- 중앙HTA
- 자바 국비
- 오라클 문법
- 스프링
- 인라인엘리먼트
- API
- 브라캣
- inline element
- 프레임워크
- Class
- 자바
- 태그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |