DAY003_8가지 형 복습, 라이브러리 추가 방법, BufferedReader와 If else문 사용
(Remind Type of Java, How to Adding Library, How to Use BufferedReader and If Else)
1. type 복습 , 8가지 타입( char, byte, short, int, float, long , double, boolean)
2. java02variable > Test02casting 에 오류
byte 타입인 x, y를 더하면 int 형이 되어 이것을 sum 에 대입할 때 오류가 발생함.
그래서 위와 같이 down casting 이 필요하다.
3. java04input 프로젝트 생성후 Test01input 클래스를 생성
4. Library 추가하는 방법
Add Library.. 나 Remove를 이용하여 라이브러리를 추가하거나 제거할 수 있다.
JRE System Library 로 라이브러리를 추가하고 다른 것을 추가해야 할 때는 다른 것을 누르고 Next
JRE System Library 의 경우 선택 후 Finish 하면 된다.
5. BufferedReader를 사용하기 위한 방법
java.lang > String.class 를 사용하려고 한다. 그런데 방법을 모를 경우에는
Oracle.com > Downloads > Java Resources > Java APIs 에서 Java SE 8 을 누르면 아래와 같은 페이지가 뜬다.
(다른 버전을 확인할 때는 다른 버전을 누르면 되고, Java SE 8 은 오라클이 관여한 기능이 많이 추가된 API이다.)
페이지가 위의 그림과 조금 다를 수 있는데, 사용하려고 했던 java.io 의 BufferedReader를 클릭하면 이렇게 BufferedReader 에 대한 설명이 나온다.
이는 BufferedReader를 사용하는 예 이다.
String의 경우에 readLine() method를 이용하여 입력받을 수 있다.
new input까지 입력후 content assist(Ctrl+ Space) 를 눌러 InputStreamReader 의 인자(괄호안의 개체수) 가 하나인 두번 째 것을 선택한다.
그러면 위와 같이 완성되는데 인자에 System.in을 넣는다.
그러면 위와같은 오류가 발생하는데 BufferedReader를 사용하기 위해 import를 해야하고 첫번째 를 선택하거나 단축키로 Ctrl+ Shift + O 를 누르게 되면 import 시킬수 있다. (Mac은 Command+Shift+ O)
다른 곳에서 사용자로 부터 입력받도록 하기위해 BufferedReader를 사용한다면 위그림의 11line부분을 복사 붙여넣은 다음 import 하면 된다.
여기까지의 작성한 코드는 위와 같다.
String name = "kim2"; 부분의 뒷부분을 br.readLine(); 으로 바꾸어 주면 위와같이 오류가 뜨고 지금까지는 설명하지 않은 예외처리로 첫번째 Add throws declaration을 클릭하면 에러가 없어진다.
없어지면서 위와같이 되는데 그냥 이대로 놔두거나 엔터를 누르면 된다.
그렇게 완성한 코드는 위와 같다.
6. 이름 뿐 아니라 국어, 영어, 수학, 총점, 평균을 BufferedReader를 사용하여 작성한다.
스스로 내가 작성했던 코드는 위와 같고, 총점 평균 부분에서 문자열이기 때문에 계산을 할 수 없는 문제가 발생했다.
강사님과 완성한 결과 코드 여기까지는 문자열(String)을 정수(Integer)로 변경할 수 없기때문에 단순히 문자열을 붙이는 식으로 결과를 확인한다.
Test01input을 복사하여 Test02Score라는 이름으로 붙여넣기(Paste) 한다.
Integer.parseInt()를 이용하여, 문자열을 Integer(정수형)으로 변화시킬 수 있다. 위는 그 방법이다.
위와 같이 국어, 영어, 수학을 모두 int형으로 바꾸고 total에 합을 저장한다.
grade 부분을 삼항연산자를 사용하여 올바르게 출력될 수 있도록 수정한다.
위는 제대로 작성되었는지 확인하는 결과 console 화면이다.
7.java02variable 프로젝트의 Test04member를 복사 하여 java04input프로젝트에서 개발자가 입력한 값이 아니라 사용자로부터 입력받을 수 있도록 수정한다.
8. java05Control 프로젝트를 만들고 Test01ifelse 를 작성한다.
if문은 위와 같이 사용하며, 괄호안의 조건식이 참 일때 중괄호 내의 구문을 수행한다.
"kim".equals("kim") 은 "kim" 문자열과 equals("kim")의 문자열이 같은지 비교한다.
코드와 실행 결과이다.
.equals() 로 비교하는 부분을 name 변수로 바꾸어 비교할 이름을 바꿀 수 있다.
if ~else 문은 위와 같이 사용하며, if 문의 조건식이 참일때 는 if문과 같고 아닐경우 else의 중괄호 내용을 수행한다.
위는 두가지를 if~else 문으로 적용시킨 것이다.
위의 두 그림은 두가지를 반대의 조건으로 하는 방법이다.
9. Test02if_elseif_else 클래스를 생성 후 작성한다.
if else if else 문을 작성하였고, 줄을 복사 할때는 Ctrl+Alt + 위아래 화살표 이고,
한줄을 이동시킬땐 Alt+ 위아래 화살표로 사용한다.
조건문에 들어가는 변수를 변경시켜서 결과 값을 확인 한 결과이다.
조건일때 수행할 동작이 한문장이면 위와 같이 중괄호를 사용하지 않아도 가능하다.
10. java03operator 프로젝트의 Test03Score를 java05Control프로젝트에 복사 후 작성한다.
두 코드는 Test03Score 를 if ~else if ~ else 문으로 적용시킨 것이며, char, String 일때 코드이다.
11. Test04menu 클래스를 생성하여 작성한다.
자판기 코드를 작성하라고 하고, 작성한 코드이다.
이 코드는 입력을 BufferedReader를 사용
자판기 에 잔액 까지 출력해주는 코딩이다.
12. Test05Switch_case 클래스 생성 후 작성한다.
Switch ~case 문은 위와 같이 사용한다.
13. Test03Score 를 복사하여, Test06Score2 로 이름을 정하고 작성한다.
switch ~case 문으로 바꾸면 위와 같다.
14. Test04menu 를 switch ~ case 문으로 바꾼다.
String도 사용할 수 있다.
char 도 switch~case에 사용할 수 있다.
Test07menu2로 복사 한후 switch ~case 문을 String으로 완성한 것이다.
15. java06loop 프로젝트를 만들고 Test01for class를 생성후 작성한다.
for문은 네가지가 있는데 현재에서는 첫번 째를 사용한다.
for문을 완성하면 위와 같고, 첫번째가 인자, 두번째는 참인 조건, 세번째는 반복문 수행 후 증가 시키는 순서대로 진행된다. 물론 참일때 for 문 내의 중괄호가 실행된다.
for문 내에 if 문도 위 처럼 사용할 수 있다.
16. Test01for3 class를 만들고, 작성한다.
29~34line의 주석처리된 부분의 결과가 나오도록 코딩한다.
내가 작성한 코딩과 강사님이 작성한 코딩은 위와 같다. 비교해보면 차이를 알 수 있다.
3번째로 4단을 제외하고 출력하도록 하려면 continue를 사용하고, continue는 조건이 참일 경우 해당 중괄호 블럭의 최하단 까지 이동한다.
17. 아래의 주석 부분이 숙제(과제) 이다. 해당 내용을 프로그래밍 한다.