2017년 1월 23일 월요일

DAY004_숙제 설명, if else if 문, while, dowhile, 배열, 다차원배열(review homework, if~else if~else, while, do~while, array, array~array )

1. Test03while class 생성 후 while문을 사용법을 숙지한다.

위와 같이 for문과 달리 조건문만 있고 변수 선언은 while문의 이전에 증감식은 내부에 위치한다.


2. Test03while을 복사하여, Test03While2 를 작성한다.

for문같이 사용했던 while의 방법 (1) 외에도 .readLine()으로 입력받아 while 문을 빠져나가는 방법도 있다.


3.java05Control 의 Test07menu2를 복사하여 Test05menu로 추가한 다음 for문을 while 문으로 변경한다.






4. Test06dowhile class를 생성하여 작성한다.



위의 코드의 첫번째는 do~while 이아니라 두번 째 코드와 같다. do~while을 제대로 표현하려면 바로위의 코드처럼 써야 한다.


5. Test06dowhile을 복사하여, Test06dowhile2 class를 만들고, String x 를 입력했을 때, 종료 되도록 작성한다.



6. Test06menu 를 복사하여 Test06menu2를 만들고, do~ while 로 수정한다.


7. Test02for class 를 만들어 작성한다. label을 설명하기 위함임.

위와 같이 out: 로 라벨을 표시하고, break 혹은 continue 뒤에 라벨이름을 작성하면 해당 라벨 블럭을 빠져나올 수 있다.

8.java07array 프로젝트를 만들고 Test01array class를 생성하여 작성한다. 이는 배열 설명이다.

배열을 생성할 때는 new type[] 형태로 생성할 수 있고 위의 코드는 그 예제이다.

첫번 째 new type[] 방법과 더불어 두번 째는 동적 할당으로 배열의 길이를 명시하지 않고 동적할당을 하는 방법이다. 

9. Test01array 를 복사하여 Test01array2를 만든다.

위 코드는 1, 2, 3 목표를 수행하기 위해 내가 작성한 코드이다.



위코드는 강사님과 따라한 코드이고, 동적할당, 정적할당 자신이 편한 방법대로 할 수 있다.


10. Test02array_array class를 만들고, 이것은 다차원 배열을 설명하기 위함이다.

위는 sus, sus2, sus3의 일차원 배열을 suss 이차원 배열에 대입하는 것이다. new 로 생성하여 한행전체를 suss[0] = sus; 처럼 한 번에 대입할 수 도 있다.

위는 대입하고 sysout으로 출력하는 것이다. 잘 보면 ln이 빠져있는 부분도 있고, for문의 조건식을 잘보면 오른쪽의 결과가 나온다는 것을 이해할 수 있다. 2열의 경우 3개만 있는데, suss[x].length 라는 조건으로 맞게 출력 할 수 있다. 모두 4개의 성분을 가지고 있다고 출력했다면 오류가 떴을 것이다.

11. Test02array_array2 class 를만들어, 다시 한 번 작성해본다.

배열이라는 것은 초기화를 하지 않았을 때 기본값이 null 이라는 것을 숙지한다. 


12. Test02array_array3 class를 만들고, string의 다차원 배열을 작성해본다.

위 코드의 name0, name1, name2처럼 각각 변수로 만들 수도 있지만 그 바로아래 String[] names 라는 String 배열을 만들어 만들 수 도 있다. 


13. 성적 프로그램을 이름 부터 등급까지 이차원 배열로 작성하고 결과를 출력한다.



2017년 1월 20일 금요일

DAY003_8가지 형 복습, 라이브러리 추가 방법, BufferedReader와 If else문 사용(Remind Type of Java, How to Adding Library, How to Use BufferedReader and If Else)

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. 아래의 주석 부분이 숙제(과제) 이다. 해당 내용을 프로그래밍 한다.